Выпуск упаковки с помощью Pyinstaller - PullRequest
0 голосов
/ 21 января 2019

Всем экспертам - мы разрабатываем приложение, которое содержит следующие модули:

  • opencv
  • numpy
  • pandas
  • stomp
  • nltk
  • bs4
  • PIL
  • запросы

и некоторые другие, которые не являются частью стандартной библиотеки питонов.Искал, чтобы упаковать то же самое в один исполняемый файл.Поэтому попытался работать с pyinstaller.То же самое при выполнении - он создает папку распределения - но он не выполняется.Выдает следующую ошибку:

Traceback (most recent call last):
File "app.py", line 6, in <module>
File "/root/Projects/BIUEngine/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "ProcessManager.py", line 7, in <module>
File "/root/Projects/BIUEngine/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "ProcessWorker.py", line 16, in <module>
File "/root/Projects/BIUEngine/lib/python3.6/site-packages/PyInstaller/loader/pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages/cv2/__init__.py", line 3, in <module>
ImportError: numpy.core.multiarray failed to import
[3502] Failed to execute script app

Ниже приведен вывод команды при запуске

root@devserver:~/Projects/BIUEngine/src# pyinstaller app.py 
113 INFO: PyInstaller: 3.4
114 INFO: Python: 3.6.7
116 INFO: Platform: Linux-4.4.0-131-generic-x86_64-with-Ubuntu-16.04-xenial
116 INFO: wrote /root/Projects/BIUEngine/src/app.spec
119 INFO: UPX is not available.
123 INFO: Extending PYTHONPATH with paths
['/root/Projects/BIUEngine/src', '/root/Projects/BIUEngine/src']
123 INFO: checking Analysis
123 INFO: Building Analysis because Analysis-00.toc is non existent
124 INFO: Initializing module dependency graph...
127 INFO: Initializing module graph hooks...
179 INFO: Analyzing base_library.zip ...
10300 INFO: running Analysis Analysis-00.toc
10357 INFO: Caching module hooks...
10381 INFO: Analyzing /root/Projects/BIUEngine/src/app.py
13258 INFO: Processing pre-find module path hook   distutils
13297 INFO: distutils: retargeting to non-venv dir '/usr/lib/python3.6/distutils'
14908 INFO: Processing pre-safe import module hook   setuptools.extern.six.moves
16017 INFO: Processing pre-find module path hook   site
16044 INFO: site: retargeting to fake-dir '/root/Projects/BIUEngine/lib/python3.6/site-packages/PyInstaller/fake-modules'
18473 INFO: Processing pre-safe import module hook   six.moves
32950 INFO: Processing pre-safe import module hook   urllib3.packages.six.moves
55571 INFO: Loading module hooks...
55572 INFO: Loading module hook "hook-PIL.Image.py"...
56546 INFO: Loading module hook "hook-encodings.py"...
56688 INFO: Loading module hook "hook-PIL.SpiderImagePlugin.py"...
56699 INFO: Excluding import 'tkinter'
56704 INFO: Import to be excluded not found: 'FixTk'
56704 INFO: Loading module hook "hook-distutils.py"...
56753 INFO: Loading module hook "hook-certifi.py"...
56755 INFO: Loading module hook "hook-sysconfig.py"...
56792 INFO: Loading module hook "hook-pytz.py"...
56989 INFO: Loading module hook "hook-nltk.py"...
57816 INFO: Loading module hook "hook-pkg_resources.py"...
58813 INFO: Processing pre-safe import module hook   win32com
58976 INFO: Loading module hook "hook-PIL.py"...
58988 INFO: Import to be excluded not found: 'FixTk'
58988 INFO: Excluding import 'PySide'
58996 INFO:   Removing import of PySide from module PIL.ImageQt
59000 INFO: Excluding import 'PyQt5'
59007 INFO:   Removing import of PyQt5 from module PIL.ImageQt
59010 INFO: Excluding import 'PyQt4'
59018 INFO:   Removing import of PyQt4 from module PIL.ImageQt
59025 INFO: Excluding import 'tkinter'
59036 INFO:   Removing import of tkinter from module PIL.ImageTk
59038 INFO: Loading module hook "hook-xml.py"...
59040 INFO: Loading module hook "hook-pandas.py"...
60447 INFO: Loading module hook "hook-sqlite3.py"...
60607 INFO: Loading module hook "hook-numpy.py"...
60609 INFO: Loading module hook "hook-pycparser.py"...
61578 INFO: Loading module hook "hook-lib2to3.py"...
61616 INFO: Loading module hook "hook-cv2.py"...
61617 INFO: Loading module hook "hook-xml.etree.cElementTree.py"...
61619 INFO: Loading module hook "hook-setuptools.py"...
62934 INFO: Loading module hook "hook-pydoc.py"...
62936 INFO: Loading module hook "hook-numpy.core.py"...
63088 INFO: Looking for ctypes DLLs
63294 WARNING: library user32 required via ctypes not found
63399 INFO: Analyzing run-time hooks ...
63439 INFO: Including run-time hook 'pyi_rth_pkgres.py'
63458 INFO: Including run-time hook 'pyi_rth_nltk.py'
63463 INFO: Including run-time hook 'pyi_rth_multiprocessing.py'
63536 INFO: Looking for dynamic libraries
65726 INFO: Looking for eggs
65727 INFO: Python library not in binary dependencies. Doing additional searching...
65822 INFO: Using Python library /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
65882 INFO: Warnings written to /root/Projects/BIUEngine/src/build/app/warn-app.txt
66237 INFO: Graph cross-reference written to /root/Projects/BIUEngine/src/build/app/xref-app.html
66476 INFO: checking PYZ
66477 INFO: Building PYZ because PYZ-00.toc is non existent
66478 INFO: Building PYZ (ZlibArchive) /root/Projects/BIUEngine/src/build/app/PYZ-00.pyz
70637 INFO: Building PYZ (ZlibArchive) /root/Projects/BIUEngine/src/build/app/PYZ-00.pyz completed successfully.
70722 INFO: checking PKG
70722 INFO: Building PKG because PKG-00.toc is non existent
70722 INFO: Building PKG (CArchive) PKG-00.pkg
70837 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
70839 INFO: Bootloader /root/Projects/BIUEngine/lib/python3.6/site-packages/PyInstaller/bootloader/Linux-64bit/run
70840 INFO: checking EXE
70840 INFO: Building EXE because EXE-00.toc is non existent
70840 INFO: Building EXE from EXE-00.toc
70842 INFO: Appending archive to ELF section in EXE /root/Projects/BIUEngine/src/build/app/app
70967 INFO: Building EXE from EXE-00.toc completed successfully.
70981 INFO: checking COLLECT
70982 INFO: Building COLLECT because COLLECT-00.toc is non existent
70983 INFO: Building COLLECT COLLECT-00.toc
82471 INFO: Building COLLECT COLLECT-00.toc completed successfully.

Может кто-нибудь, пожалуйста, помогите мне с тем же .. как я могу решить проблему

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Спасибо всем, кто помогает там. Я также написал в другом месте - и с Божьей благодатью - кто-то придумал решение для ответа. Это сработало для меня. Он предложил следующее: у меня может быть 2 или более разных numpy для разных версий машины. Один для 2,7, другой для 3,6 и так далее. Он посоветовал мне удалить любую из них и проверить, все ли получилось. Это действительно имело некоторый смысл - поэтому я пошел вперед и очистил все numpy из 2.7 / 3.6 и других пакетов, которые были установлены вручную для проекта, как требовалось. Отправьте это - я только что создал виртуальную машину и сделал новую установку необходимых пакетов (вместе с numpy).

Также - удостоверился, что pyinstaller - во время сборки искал numpy.core.multiarray как скрытый импорт. (Второй шаг - я уже пробовал в прошлом).

Что сказать - у меня все получилось. Это перестало давать мне ошибку, которую он использовал для этого. Сейчас я решаю другие проблемы - но этот метод / механизм наверняка сработал для меня.

Спасибо всем за помощь мне снова. Люблю вас всех.

0 голосов
/ 24 января 2019

Ошибка ImportError: numpy.core.multiarray failed to import печально известна тем, что вызывает сбои, связанные с попыткой numpy импортировать общие библиотеки для конкретной платформы.Почти всегда это либо вызвано попыткой импортировать неправильную версию , либо тем, что эти библиотеки вообще не найдены.

Возможно, ваш упакованный исполняемый файл пытается импортировать какую-то инфраструктуру из вне пакета и возникло некоторое несовпадение версий.Скорее всего, вы также работаете с какой-то виртуальной средой, такой как conda или virtualenv?

Без доступа к машине очень трудно точно определить проблему.Я бы попробовал следующее, чтобы собрать дополнительную информацию по этой проблеме:

  1. Попробуйте запустить свой исполняемый файл на другом компьютере, на котором вообще отсутствует python или, по крайней мере, numpy и посмотрите, что произойдет.

  2. Попробуйте упаковать свое приложение на компьютере, на котором установлена ​​только одна версия numpy.

  3. Тщательно выясните, какая версия и откуда numpyфактически импортируется путем запуска python -c 'import numpy; print(numpy.__version__); print(numpy.__file__)' в среде, в которой вы создаете исполняемый файл, а также в самом исполняемом файле.

Последний шаг можно выполнить, поставив

import numpy
import numpy
print(numpy.__version__)
print(numpy.__file__)

в вашем app.py в качестве самых первых строк (то есть, чтобы увидеть вывод до его сбоя)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...