【发布时间】:2015-07-25 00:13:51
【问题描述】:
有一个项目我需要同时使用 Python 3.3 和 2.7。我正在尝试在 Python 2.7 下启动一个脚本,但它不起作用。这是一个简单的例子。
first.py
import subprocess
import sys
print('Inside first.py')
print(sys.version)
subprocess.Popen(["C:\Python27\ArcGISx6410.2\Python.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:\Python33\lib\site.py", line 173
file=sys.stderr)
^
SyntaxError: invalid syntax
这就是整个堆栈跟踪。如果我用notepad.exe 替换C:\...Python.exe,那么它就可以了。我在 Windows 7 上使用 Liclipse。
更新:似乎运行了不同版本的 Python,当从命令行 python first.py 是 3.3 但 py first.py 或只是 first.py 然后使用 2.7。
【问题讨论】:
-
正如我昨天在对(现已删除?)重复问题的评论中所说:(1)首先运行最简单的python 2脚本,即从
second.py中删除import arcpy,看看它是否有效(2) 将import sys; print sys.version(没有括号!)放入second.py并运行。如果您看到 Python 3 而不是 Python 2,那么 找出为什么C:\Python27文件夹(建议 Python _2.7_ 版本)包含 python _3_ 可执行文件。 (3) 从命令行运行first.py(cmd .exe),获取完整的回溯 -
@J.F.Sebastian 这取决于我如何运行它。
python first.py导致second.py以 2.7 运行,但py first.py和first.py导致second.py以 3.3 运行。如果我尝试从 Eclipse 运行,它就会崩溃。
标签: python python-2.7 python-3.x popen