你只是想传递一个参数给脚本?当然,这很容易。
做到这一点的主要方法是使用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
文档。
如果要添加多个路径,只是改变这两条线:
paths = sys.argv[1:]
sys.path.extend(paths)
如果你想要的东西,粘在你的环境周围,这样你就不必每次都通过它,那是什么环境变量是。
实际上有一个名为IRONPYTHONPATH
的标准环境变量,应该可以工作,而无需执行任何操作。我从来没有用过它,但如果它有效,你根本不需要在代码中做任何明确的操作。只需将它设置在您的控制面板中的cmd.exe
外壳程序中,在您正在启动myscript.py
的C#程序中,然后从适当的地方进行设置。前两个例子是This answer。 (他们正在设置PYTHONPATH
,这会影响CPython,而不是影响IronPython的IRONPYTHONPATH
,但显然应该改变。)
如果不工作,你可以做手工同样的事情:
import os
import sys
path = os.environ['MY_IRONPYTHON_EXTRA_PATH']
sys.path.append(path)
import urllib
import httplib
现在,你可以设置的,而不是IRONPYTHON_PATH
是MY_IRONPYTHON_EXTRA_PATH
环境变量。
在这里,因为你只是一个字符串而不是一个列表,所以如果你想指定多个路径,你需要添加一个分隔符。 Windows上的标准路径分隔符是分号。所以:
paths = os.environ['MY_IRONPYTHON_EXTRA_PATH'].split(';')
sys.path.extend(paths)
您是否可以检查http://stackoverflow.com/questions/4852386/ironpython-dlr-passing-parameters-to-compiled-code问题如果是你想要的吗? –