web-dev-qa-db-ja.com

IronPythonでの外部モジュールのインポート

私は現在、IronPythonを埋め込んでいるC#で記述されたアプリケーションに取り組んでいます。通常は問題ありませんが、対処方法がわからないことが1つあります。

外部モジュールをスクリプトにインポートしたい。どうやってやるの?単純なimport ext_libは機能しません。 libへのパスをsys.pathに追加する必要がありますか?たぶん、libの.pyファイルをappディレクトリにコピーしてそこからインポートすることは可能ですか?

EDIT:ついに別のソリューションを選択しました-スクリプトをpy2exeでコンパイルし、メインのC#アプリからProcessで実行しています(IronPythonを使用せずに)。

とにかく、助けてくれてありがとう;)

17
uolot

PythonEngineを使用してスクリプトをコンパイルする前に、スクリプトのディレクトリをエンジンの検索パスに追加します。これは私がC#コードで行うことです:

string dir = Path.GetDirectoryName(scriptPath);                       
ICollection<string> paths = engine.GetSearchPaths();

if (!String.IsNullOrWhitespace(dir))
{
    paths.Add(dir);
}
else
{
    paths.Add(Environment.CurrentDirectory);
}
engine.SetSearchPaths(paths);

これで、実行しているスクリプトが存在するディレクトリにライブラリがある場合、それらはインポート可能になります。

23
Rohit

パスが正しく設定されていない可能性があります。から IronPython FAQ

CPython標準ライブラリを使用するにはどうすればよいですか?

IronPythonにPython標準ライブラリがどこにあるかを伝えるには、CPythonの「lib」ディレクトリをIronPythonのパスに追加します。これを行うには、次のコードをIronPythonの「site.py」ファイルに入れます( c:\ python24\libをCPythonlibディレクトリへの実際のパスに置き換えます):

import sys
sys.path.append(r"c:\python24\lib")

また、doがコンピューター上にあるスクリプトのCPythonでインポートエラーが発生した場合、99%の確率でパスの問題が発生しますあまりにも。

10
Mark Rushakoff