当我也有 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 的包装器,使用起来更容易。
由于您不愿意像您评论的那样安装虚拟环境,因此一个简单的解决方法是:
- 找到安装 python 2.x 的路径 例如:(不确定):
/usr/local/lib/python2.7
- 打开控制台
- 输入
PATH=/usr/local/lib/python2.7:$PATH
- 键入
python --version
只是为了检查它说的是 V2 而不是 V3
- 运行 带有
python
前缀的 pyinstaller 可执行文件
这不会影响系统路径(控制台的本地路径),因此无需恢复到以前的路径设置。完成后关闭控制台即可。
此外,不要使用 sudo
,因为它不需要,而且 changes/resets 路径,正如您确认的那样,这是您的问题。
好像是自动使用最新版本,我一直没能在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 的包装器,使用起来更容易。
由于您不愿意像您评论的那样安装虚拟环境,因此一个简单的解决方法是:
- 找到安装 python 2.x 的路径 例如:(不确定):
/usr/local/lib/python2.7
- 打开控制台
- 输入
PATH=/usr/local/lib/python2.7:$PATH
- 键入
python --version
只是为了检查它说的是 V2 而不是 V3 - 运行 带有
python
前缀的 pyinstaller 可执行文件
这不会影响系统路径(控制台的本地路径),因此无需恢复到以前的路径设置。完成后关闭控制台即可。
此外,不要使用 sudo
,因为它不需要,而且 changes/resets 路径,正如您确认的那样,这是您的问题。