使用subprocess.Popen(..)
此命令:
HG_REV = subprocess.Popen(["hg", "log", "-l", "1", "../"], stdout=subprocess.PIPE).communicate()[0]
给我以下错误:
File "/usr/lib/python3.4/site.py", line 182
file=sys.stderr)
^
SyntaxError: invalid syntax
但是这个工作正常:
HG_REV = subprocess.Popen(['ls','-la'], stdout=subprocess.PIPE).communicate()[0]
有人能解释一下,为什么会出现这个错误以及如何解决它?
参考这篇文章:Mercurial scripting with python
==================更新1 =========================== =================== 我发现它与pydev有关,我的eclipse中的任何东西都可能改变了环境变量。我很确定,因为在linux shell上的文件(python3.4 test.py)中运行上面的命令工作了!!
以下是更多信息:
(我也尝试过hglib,并且在运行时会发生完全相同的“错误”
client = hglib.open(my_mercurial_repo)
因为open也在使用subprocess.Popen(..)
)
==================更新2 =========================== ===================
将PYTHONPATH
设置为/usr/bin/python3.4
代码有效!!但这种行为对我来说似乎很奇怪。在虚拟机上使用python3.4的常用方法是什么?问题仍未解决。