由于某些需要,我被迫更正os.environ['PATH']以能够运行dir\to\fake\python.cmd脚本,该脚本在执行之前向原始参数添加了一些额外的参数。
我还有两个 python 脚本:
测试1.py:
# ...
p = subprocess.call("test2.py") # shell=True works fine
# ...
测试2.py:
# ...
print "Hello from test2.py"
# ...
当我运行python test1.py我的“假”python.cmd做它的东西时,指的是原始 pythonc:\Python25并test1.py使用我的额外参数运行。但是,遗憾的test2.py是,脚本从未被调用。如果我把shell=True作为subprocess.call论点 - 一切都很好,test2.py被称为。
我知道,默认情况下,Windows 正在尝试在实际c:\Python25工作目录中找到用于调用的 python 解释器。shell=False
对您的问题是:如何在不更改test1.pyand 中的代码的情况下实现目标test2.py?也许virtualenv图书馆在这种情况下可能非常有用?
非常感谢您的帮助