有一个项目,我需要同时使用Python 3.3和2.7。我试图在Python 2.7下启动一个脚本,但它不工作。这里有一个简单的例子。
first.py
import subprocess
import sys
print('Inside first.py')
print(sys.version)
subprocess.Popen(["C:Python27ArcGISx6410.2Python.exe", "second.py"])
second.py
import arcpy
print 'This is second.py'
这不起作用,输出是
Inside first.py
3.3.5 (v3.3.5:62cf4e77f785, Mar 9 2014, 10:35:05) [MSC v.1600 64 bit (AMD64)]
File "C:Python33libsite.py", line 173
file=sys.stderr)
^
SyntaxError: invalid syntax
这是整个堆栈跟踪。如果我用notepad.exe
代替C:...Python.exe
,就可以了。我在Windows 7上使用的是eclipse。
更新:它似乎运行不同版本的Python,当从命令行python first.py
是3.3,但py first.py
或first.py
则使用2.7。
尝试:
import os
subprocess.Popen(["C:\Python27\ArcGISx6410.2\Python.exe", "second.py"], env=dict(os.environ, PYTHONHOME="C:\Python27\ArcGISx6410.2"))
Windows上的Python有时需要一些帮助来确定使用哪个版本的标准库。