スクリプトにパラメータを渡したいだけですか?確かに、それは簡単です。
これを行う主な方法は、次を使用することですsys.argv
。
import sys
path = sys.argv[1]
sys.path.append(path)
import urllib
import httplib
次に、これを行う代わりに:
py.exe myscript.py
これをして:
py.exe myscript.py "C:\Program Files (x86)\IronPython 2.7\Lib"
これを.NETランチャープログラム内から直接実行している場合は、変数を動的に挿入することもできます。
PYthon_Script.SetVariable("path", "C:\Program Files (x86)\IronPython 2.7\Lib")
次に、スクリプト内から、その変数を使用できます。
またはsys.path
、ランチャーから自分自身を変更することもできます。詳細については、Runtime
ドキュメントを参照してください。
複数のパスを追加する場合は、次の2行を変更するだけです。
paths = sys.argv[1:]
sys.path.extend(paths)
環境内にとどまるものが必要な場合は、毎回それを渡す必要はありません。それが環境変数の目的です。
実際には、IRONPYTHONPATH
何もしなくても機能するという名前の標準環境変数があります。私自身はこれを使用したことがありませんが、機能する場合は、コードで明示的に何もする必要はありません。cmd.exe
シェル、コントロールパネル、起動元のC#プログラムで、myscript.py
適切なものを設定するだけです。この回答には、最初の2つの例があります。PYTHONPATH
(IronPythonに影響を与えるのではなく、CPythonに影響を与える設定を行っていますIRONPYTHONPATH
が、何を変更するかは明らかです。)
それが機能しない場合は、同じことを手動で行うことができます。
import os
import sys
path = os.environ['MY_IRONPYTHON_EXTRA_PATH']
sys.path.append(path)
import urllib
import httplib
MY_IRONPYTHON_EXTRA_PATH
これで、の代わりにその環境変数を設定できますIRONPYTHON_PATH
。
ここでは、リストではなく文字列があるため、複数のパスを指定する場合は、区切り文字を追加する必要があります。Windowsの標準のパス区切り文字はセミコロンです。それで:
paths = os.environ['MY_IRONPYTHON_EXTRA_PATH'].split(';')
sys.path.extend(paths)