我一直在试验PyInstaller几天。我的操作系统是FreeBSD 10.4,我使用的是Python 3.6。当我从终端发出这个命令时,一切正常:
# pyinstaller my_script.py
但是这个命令具有前所未有的副作用。当我这样写:
if __debug__:
print("debug")
我将“debug”打印到控制台,这表明PyInstaller使用调试符号编译脚本。
在寻找这个问题的解决方案时,我发现使用-O参数通过Python解释器运行PyInstaller可以解决问题:
[root@bsd-pwb ~]# /usr/local/bin/python3.6 /usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py my_script.py
但是这一次,我明白了:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/PyInstaller/__main__.py", line 21, in <module>
from . import __version__
ImportError: cannot import name '__version__'
我在这里做错了什么?如何在“ debug ”设置为“False”的情况下编译PyInstaller?
答案 0 :(得分:0)
我建议您完全按原样尝试使用脚本,但是使用Python 3.5环境时,有很多出版物可以使您认识到pyinstaller使用python 3.5版本比3.6更稳定。我在评论时遇到了几个错误,最后仅在python <= 3.5
上运行我的脚本就解决了答案 1 :(得分:0)
实际上,您可以使用另一种方法通过the docs使其起作用:在您的情况下,将PYTHONOPTIMIZE
环境变量显式设置为非零值:
PYTHONOPTIMIZE=1 pyinstaller myscript.py