pyinstaller ImportError错误-如何解决?

时间:2018-12-08 02:29:00

标签: python linux python-3.x pyinstaller

我已经在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

确实...它未出现在点列表中:

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   

怎么了?

3 个答案:

答案 0 :(得分:1)

您的项目是python3,但是在python2.7上运行的pyinstaller从2.7的python3安装中删除了软件包

从python2.7卸载pyinstaller

pip uninstall pyinstaller

为python3安装pyintaller

pip3 install pyinstaller

如果您想将这个软件包同时用于python2.7和3,请在python3上运行pyinstaller

python3 -m pyinstaller --onefile example.py

答案 1 :(得分:0)

pip和pip3将调用不同的python解释器(分别为2.7和3)。

类似地,python和python3也有所不同,如果您使用“ pip3 install pyinstaller”,而现在您正在调用“ python -m pyinstaller”,则解释器将在pip列表中搜索pyinstaller!相反,您想执行“ python3 -m pyinstaller”,然后它应该可以工作。

使用时:

pyinstaller --onefile example.py

您的pyinstaller是使用pip安装在python2.7中的,因此无法在您的pip3列表(python3)中找到名为dis3的模块。

这是设置pyinstaller的另一种方法,因此您可以在linux中直接使用“ pyinstaller yourfile.py”。

1)git clone https://github.com/pyinstaller/pyinstaller

2)cd pyinstaller,然后将CD放入引导加载器

3)运行“ python3 ./waf distclean all”以为您的系统构建引导程序。

4)构建引导程序后,键入:“ python3 setup.py install”

5)这应该已经安装了pyinstaller。在终端中输入pyinstaller并点击     输入。它应该可以识别该命令,但是会抱怨更多的参数。

6)使用命令“ pyinstaller yourfile.py”创建可执行文件。

如果要创建独立的一个文件可执行文件,请使用:“ pyinstaller --onefile yourfile.py”

希望这会有所帮助!

答案 2 :(得分:-1)

我按照此链接的说明进行操作:Python Issue 它解决了我提到的最后一个问题。