当我也有 3.5 时,如何让 pyinstaller 使用 python 2.7?

how do I make pyinstaller use python 2.7 when I also have 3.5?

好像是自动使用最新版本,我一直没能在pyinstaller文档中找到答案。
它抱怨说我的python2代码语法不正确,但是它没有。

    Traceback (most recent call last):
      File "/usr/bin/pyinstaller", line 11, in <module>
        load_entry_point('PyInstaller==3.2', 'console_scripts', 'pyinstaller')()
      File "/usr/lib/python3.5/site-packages/PyInstaller/__main__.py", line 90, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/lib/python3.5/site-packages/PyInstaller/__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 788, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "/usr/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 734, in build
    exec(text, spec_namespace)
  File "<string>", line 16, in <module>
  File "/usr/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 212, in __init__
    self.__postinit__()
  File "/usr/lib/python3.5/site-packages/PyInstaller/building/datastruct.py", line 178, in __postinit__
    self.assemble()
  File "/usr/lib/python3.5/site-packages/PyInstaller/building/build_main.py", line 413, in assemble
    priority_scripts.append(self.graph.run_script(script))
  File "/usr/lib/python3.5/site-packages/PyInstaller/depend/analysis.py", line 144, in run_script
    self._top_script_node = super(PyiModuleGraph, self).run_script(pathname)
  File "/usr/lib/python3.5/site-packages/PyInstaller/lib/modulegraph/modulegraph.py", line 888, in run_script
    co_ast = compile(contents, pathname, 'exec', ast.PyCF_ONLY_AST, True)
  File "/home/chuck/Pictures/testpics/photoresize.py", line 59
    print "incorrect options please choose from d(irectory),s(ize),e(xtension),r(ecursive) or use defaults"
                                                                                                          ^
SyntaxError: invalid syntax

也许使用 virtualenv,或者 virtualenvwrapper 使用 virtualenv 可以创建具有不同版本 Python 的单独环境。 virtualenvwrapper 是 virtualenv 的包装器,使用起来更容易。

由于您不愿意像您评论的那样安装虚拟环境,因此一个简单的解决方法是:

  1. 找到安装 python 2.x 的路径 例如:(不确定):/usr/local/lib/python2.7
  2. 打开控制台
  3. 输入PATH=/usr/local/lib/python2.7:$PATH
  4. 键入 python --version 只是为了检查它说的是 V2 而不是 V3
  5. 运行 带有 python 前缀的 pyinstaller 可执行文件

这不会影响系统路径(控制台的本地路径),因此无需恢复到以前的路径设置。完成后关闭控制台即可。

此外,不要使用 sudo,因为它不需要,而且 changes/resets 路径,正如您确认的那样,这是您的问题。