pyinstaller ImportError 错误 - 如何解决?
pyinstaller ImportError error - how to solve it?
我已经在我的 Linux 中安装了 pyinstaller,以便为我的 Python 脚本创建一个可执行文件,该脚本使用以下命令正常运行:
python3 exemplo.py
但是当我执行下面的命令时:
pyinstaller --onefile example.py
我收到以下错误:
File "/home/pedro/.local/bin/pyinstaller", line 11, in <module>
sys.exit(run()) File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/__main__.py",
line 79, in run
import PyInstaller.building.build_main File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/building/build_main.py",
line 33, in <module>
from ..depend import bindepend File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/depend/bindepend.py",
line 26, in <module>
from . import dylib, utils File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/depend/utils.py",
line 25, in <module>
from ..lib.modulegraph import util, modulegraph File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/lib/modulegraph/util.py",
line 16, in <module>
from ._compat import StringIO, BytesIO, get_instructions, _READ_MODE File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/lib/modulegraph/_compat.py",
line 29, in <module>
from dis3 import get_instructions ImportError: No module named dis3
怎么了?
我尝试安装 dis3:
python3 -m pip install --user dis3
但我仍然得到同样的错误。
我卸载了它...
python -m pip uninstall pyinstaller
按照建议重新安装。
python3 -m pip install --user pyinstaller
我已经设置了 PATH 变量:
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/pedro/.local/bin
现在我收到消息:
pedro@pedro-pc:~/Documents/instabot/instabot_c.py$ python -m pyinstaller --onefile example.py
/usr/bin/python: No module named pyinstaller
确实...它没有出现在 pip 列表中:
pedro@pedro-pc:~/Documents/instabot/instabot_c.py/__pycache__$ pip list
/home/pedro/.local/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown.
warnings.warn(warning, RequestsDependencyWarning)
Package Version
-------------- ----------------------
altgraph 0.16.1
arandr 0.1.9
beautifulsoup4 4.4.1
certifi 2018.10.15
chardet 3.0.4
cryptography 1.2.3
defer 1.0.6
enum34 1.1.2
fake-useragent 0.1.11
future 0.17.1
html5lib 0.999
idna 2.7
ipaddress 1.0.16
lxml 3.5.0
macholib 1.11
numpy 1.11.0
pefile 2018.8.8
pip 18.1
psutil 3.4.2
pyasn1 0.1.9
pycurl 7.43.0
Pygments 2.1
pygobject 3.20.0
pyOpenSSL 0.15.1
pysqlite 2.7.0
python-apt 1.1.0b1+ubuntu0.16.4.2
python-debian 0.1.27
pyxdg 0.25
requests 2.20.0
scour 0.32
setuptools 20.7.0
six 1.10.0
urllib3 1.24
wheel 0.29.0
怎么了?
您的项目是 python3,但是 pyinstaller 运行 在 python2.7 上从 python3
的 2.7 安装中删除了包
从 python2.7
卸载 pyinstaller
pip uninstall pyinstaller
为 python3
安装 pyintaller
pip3 install pyinstaller
如果你想把这个包用于 python2.7 和 3 这个代码 运行 pyinstaller on python3
python3 -m pyinstaller --onefile example.py
我遵循了这个 link 的说明:Python Issue
它解决了我提到的最后一个问题。
pip 和 pip3 将调用不同的 python 解释器(分别为 2.7 和 3)。
同样 python 和 python3 也不同,如果您使用 "pip3 install pyinstaller" 现在您调用 "python -m pyinstaller",您的解释器正在搜索 pyinstaller点列表!相反,你想做 "python3 -m pyinstaller" 然后它应该工作。
当您使用时:
pyinstaller --onefile example.py
您的 pyinstaller 是使用 pip 安装在 python2.7 中的,因此它找不到名为 dis3 的模块,您可能在 pip3 列表 (python3) 中找到了该模块。
这里有另一种设置pyinstaller的方法,这样就可以直接在linux中使用"pyinstaller yourfile.py"了。
1) git 克隆 https://github.com/pyinstaller/pyinstaller
2) cd pyinstaller,然后 cd 进入 bootloader
3) 运行 “python3 ./waf distclean all” 为您的系统构建引导加载程序。
4) 构建引导加载程序后,输入:“python3 setup.py install”
5) 这个应该已经安装好了pyinstaller。在终端中输入 pyinstaller 并点击
进入。它应该识别命令,但它会抱怨更多参数。
6) 使用命令 "pyinstaller yourfile.py" 创建可执行文件。
如果你想创建一个独立的可执行文件使用:"pyinstaller --onefile yourfile.py"
希望对您有所帮助!
我已经在我的 Linux 中安装了 pyinstaller,以便为我的 Python 脚本创建一个可执行文件,该脚本使用以下命令正常运行:
python3 exemplo.py
但是当我执行下面的命令时:
pyinstaller --onefile example.py
我收到以下错误:
File "/home/pedro/.local/bin/pyinstaller", line 11, in <module>
sys.exit(run()) File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/__main__.py",
line 79, in run
import PyInstaller.building.build_main File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/building/build_main.py",
line 33, in <module>
from ..depend import bindepend File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/depend/bindepend.py",
line 26, in <module>
from . import dylib, utils File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/depend/utils.py",
line 25, in <module>
from ..lib.modulegraph import util, modulegraph File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/lib/modulegraph/util.py",
line 16, in <module>
from ._compat import StringIO, BytesIO, get_instructions, _READ_MODE File "/home/pedro/.local/lib/python2.7/site-packages/PyInstaller/lib/modulegraph/_compat.py",
line 29, in <module>
from dis3 import get_instructions ImportError: No module named dis3
怎么了?
我尝试安装 dis3:
python3 -m pip install --user dis3
但我仍然得到同样的错误。
我卸载了它...
python -m pip uninstall pyinstaller
按照建议重新安装。
python3 -m pip install --user pyinstaller
我已经设置了 PATH 变量:
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/pedro/.local/bin
现在我收到消息:
pedro@pedro-pc:~/Documents/instabot/instabot_c.py$ python -m pyinstaller --onefile example.py
/usr/bin/python: No module named pyinstaller
确实...它没有出现在 pip 列表中:
pedro@pedro-pc:~/Documents/instabot/instabot_c.py/__pycache__$ pip list
/home/pedro/.local/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py:83: RequestsDependencyWarning: Old version of cryptography ([1, 2, 3]) may cause slowdown.
warnings.warn(warning, RequestsDependencyWarning)
Package Version
-------------- ----------------------
altgraph 0.16.1
arandr 0.1.9
beautifulsoup4 4.4.1
certifi 2018.10.15
chardet 3.0.4
cryptography 1.2.3
defer 1.0.6
enum34 1.1.2
fake-useragent 0.1.11
future 0.17.1
html5lib 0.999
idna 2.7
ipaddress 1.0.16
lxml 3.5.0
macholib 1.11
numpy 1.11.0
pefile 2018.8.8
pip 18.1
psutil 3.4.2
pyasn1 0.1.9
pycurl 7.43.0
Pygments 2.1
pygobject 3.20.0
pyOpenSSL 0.15.1
pysqlite 2.7.0
python-apt 1.1.0b1+ubuntu0.16.4.2
python-debian 0.1.27
pyxdg 0.25
requests 2.20.0
scour 0.32
setuptools 20.7.0
six 1.10.0
urllib3 1.24
wheel 0.29.0
怎么了?
您的项目是 python3,但是 pyinstaller 运行 在 python2.7 上从 python3
的 2.7 安装中删除了包从 python2.7
卸载 pyinstallerpip uninstall pyinstaller
为 python3
安装 pyintallerpip3 install pyinstaller
如果你想把这个包用于 python2.7 和 3 这个代码 运行 pyinstaller on python3
python3 -m pyinstaller --onefile example.py
我遵循了这个 link 的说明:Python Issue 它解决了我提到的最后一个问题。
pip 和 pip3 将调用不同的 python 解释器(分别为 2.7 和 3)。
同样 python 和 python3 也不同,如果您使用 "pip3 install pyinstaller" 现在您调用 "python -m pyinstaller",您的解释器正在搜索 pyinstaller点列表!相反,你想做 "python3 -m pyinstaller" 然后它应该工作。
当您使用时:
pyinstaller --onefile example.py
您的 pyinstaller 是使用 pip 安装在 python2.7 中的,因此它找不到名为 dis3 的模块,您可能在 pip3 列表 (python3) 中找到了该模块。
这里有另一种设置pyinstaller的方法,这样就可以直接在linux中使用"pyinstaller yourfile.py"了。
1) git 克隆 https://github.com/pyinstaller/pyinstaller
2) cd pyinstaller,然后 cd 进入 bootloader
3) 运行 “python3 ./waf distclean all” 为您的系统构建引导加载程序。
4) 构建引导加载程序后,输入:“python3 setup.py install”
5) 这个应该已经安装好了pyinstaller。在终端中输入 pyinstaller 并点击 进入。它应该识别命令,但它会抱怨更多参数。
6) 使用命令 "pyinstaller yourfile.py" 创建可执行文件。
如果你想创建一个独立的可执行文件使用:"pyinstaller --onefile yourfile.py"
希望对您有所帮助!