您只想将参数传递给脚本?当然,这很容易。
做到这一点的主要方法是使用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# 程序中,无论是什么合适的。这个答案有前两个的例子。(他们设置的是PYTHONPATH
,它会影响 CPython,而不是IRONPYTHONPATH
,它会影响 IronPython,但应该很明显要改变什么。)
如果这不起作用,您可以手动执行相同的操作:
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)