Как сгенерировать python exe скрипта python, включая другие скрипты python

#python #py2exe

#python #py2exe

Вопрос:

Я пытаюсь сгенерировать exe-файл для скрипта python «cnss_image_loader.py » который импортирует другие скрипты python в ту же папку (см. Ниже), теперь я пытаюсь сгенерировать «cnss_image_loader.exe » используя команду python setup.py py2exe (см. Вывод ниже) и сталкиваясь с приведенными ниже ошибками, не уверен, являются ли они реальной проблемой или нет, но когдазапуск сгенерированного exe выдает ошибки, показанные ниже

ВОПРОС:

1. Могу ли я не использовать py2exe для создания исполняемого файла?

2. Может ли кто-нибудь точно указать, чего мне не хватает, и дать рекомендации по созданию exe?

3.Is есть лучший способ сгенерировать исполняемый файл python?

ОШИБКА:-

 C:Dropboxpy2exedist>cnss_image_loader.exe
Traceback (most recent call last):
  File "cnss_image_loader.py", line 9, in <module>
  File "android_dl.pyc", line 2, in <module>
  File "pip__init__.pyc", line 14, in <module>
  File "piputils__init__.pyc", line 22, in <module>
  File "pipcompat__init__.pyc", line 26, in <module>
ImportError: No module named ipaddr
  

Структура каталогов:-
py2exe

cnss_image_loader.py

 from android_dl import *
from alpaca import *
  

setup.py

 from distutils.core import setup
import py2exe 
setup(console=['cnss_image_loader.py'])
  

python setup.py py2exe

 The following modules appear to be missing
['Carbon', 'Carbon.Files', 'ElementC14N', 'OpenSSL.SSL', 'Pyrex.Distutils.build_ext', '_frozen_importlib', '_imp', '_manylinux', '_posixsubprocess', '_scproxy', '_sysconfigdata', 'backports.ssl_match_hostname', 'builtins', 'certifi', 'charade.universaldetector', 'chardet', 'chardet.universaldetector', 'configparser', 'datrie', 'genshi.core', 'html', 'html.entities', 'html.parser', 'http', 'http.client', 'http.cookies', 'importlib.machinery', 'importlib.util', 'ipaddr', 'ipaddress', 'java', 'lxml', 'lxml.etree', 'lzma', 'ndg.httpsclient.ssl_peer_verification', 'ndg.httpsclient.subj_alt_name', 'ordereddict', 'packages.six.moves', 'packages.ssl_match_hostname.CertificateError', 'packages.ssl_match_hostname.match_hostname', 'packages.urllib3.util.Timeout', 'packages.urllib3.util.parse_url', 'pip._vendor.six.moves.urllib', 'pyasn1.codec.der', 'pyasn1.type', 'queue', 'redis', 'reprlib', 'serial', 'serial.tools.list_ports', 'serializer.serialize', 'simplejson', 'sitecustomize', 'socks', 'tree
builders.getTreeBuilder', 'treewalkers.getTreeWalker', 'trie.Trie', 'urllib.error', 'urllib.parse', 'urllib.request', 'urllib3', 'urllib3.packages.backports.makefile', 'usercustomize', 'xmlrpc.client']

*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.

Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.

   OLEAUT32.dll - C:WINDOWSsystem32OLEAUT32.dll
   USER32.dll - C:WINDOWSsystem32USER32.dll
   IMM32.dll - C:WINDOWSsystem32IMM32.dll
   SHELL32.dll - C:WINDOWSsystem32SHELL32.dll
   ole32.dll - C:WINDOWSsystem32ole32.dll
   COMDLG32.dll - C:WINDOWSsystem32COMDLG32.dll
   COMCTL32.dll - C:WINDOWSsystem32COMCTL32.dll
   ADVAPI32.dll - C:WINDOWSsystem32ADVAPI32.dll
   NETAPI32.dll - C:WINDOWSsystem32NETAPI32.dll
   WS2_32.dll - C:WINDOWSsystem32WS2_32.dll
   GDI32.dll - C:WINDOWSsystem32GDI32.dll
   VERSION.dll - C:WINDOWSsystem32VERSION.dll
   KERNEL32.dll - C:WINDOWSsystem32KERNEL32.dll
   ntdll.dll - C:WINDOWSsystem32ntdll.dll
  

Комментарии:

1. Кстати, этот метод работает, если скрипт python не включает другие скрипты python

Ответ №1:

То, что я использую лично, — это pyinstaller. Вы можете установить его для python, используя следующую команду в cmd:

 pip install pyinstaller
  

После установки вы можете использовать его следующим образом:

 python -m pyinstaller main.py
  

где main.py это ваш модуль python. Вы также можете предоставить файл значков для своего приложения --icon , используя следующую опцию

 python -m pyinstaller --icon=hi.ico main.py
  

Вы также можете создать отдельное приложение --onefile , используя следующую опцию:

 python -m pyinstaller --onefile main.py
  

Вы можете найти больше информации на их веб-сайте https://www.pyinstaller.org или в их руководстве по https://pyinstaller.readthedocs.io/en/stable /

Комментарии:

1. Камил, было бы здорово, если бы вы предоставили ссылку, где можно получить более подробную информацию о pyinstaller и его использовании. Возможно, сообщение в блоге, страница документации пакетов и т. Д.

2. @DejiS Я рекомендую прочитать их руководство ( pyinstaller.readthedocs.io/en/stable ), поскольку он довольно подробно описывает, как его использовать. Извините за поздний ответ.

3. Не беспокойтесь. Рад, что вы отредактировали свой ответ, чтобы предоставить ссылки на их веб-сайт и документацию. Это должно значительно облегчить понимание вашего ответа Спасибо!