pyinstaller ImportError error - как ее решить? - PullRequest
0 голосов
/ 08 декабря 2018

Я установил pyinstaller в моем Linux, чтобы создать исполняемый файл для моего скрипта 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 голосов
/ 08 декабря 2018

Я следовал инструкциям этой ссылки: Python Issue Это решило последнюю проблему, которую я упомянул.

0 голосов
/ 10 декабря 2018

pip и pip3 вызовут разные интерпретаторы python (2.7 и 3 соответственно).

Точно так же python и python3 тоже различны, если вы использовали "pip3 install pyinstaller" и теперь вы вызываете "python -m"pyinstaller ", ваш переводчик ищет pyinstaller в списке пунктов!Вместо этого вы хотите сделать «python3 -m pyinstaller», и тогда он должен работать.

Когда вы использовали:

pyinstaller --onefile example.py

Ваш pyinstaller был установлен в python2.7 с использованием pip, и такНе удалось найти модуль с именем dis3, который, вероятно, имеется в вашем списке pip3 (python3).

Вот еще один способ настроить pyinstaller, чтобы вы могли напрямую использовать "pyinstaller yourfile.py" в linux.

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 в терминале и нажмите Enter.Он должен распознать команду, но будет жаловаться на дополнительные аргументы.

6) Используйте команду "pyinstaller yourfile.py" для создания вашего исполняемого файла.

Если вы хотите создать stand-только один исполняемый файл используется: "pyinstaller --onefile yourfile.py"

Надеюсь, это поможет!

0 голосов
/ 08 декабря 2018

ваш проект - python3, но pyinstaller, работающий на python2.7, удаляет пакет из 2.7, устанавливает для python3

, удаляет pyinstaller из python2.7

pip uninstall pyinstaller

устанавливает pyintaller для python3

pip3 install pyinstaller

если вы хотите установить этот пакет для python2.7 и 3, этот код запустите pyinstaller на python3

python3 -m pyinstaller --onefile example.py
...