Ошибка импорта при использовании pyinstaller для создания одного исполняемого файла - PullRequest
0 голосов
/ 04 июля 2018

У меня есть пакет Python, который включает в себя несколько модулей Python. Проект был создан в pycharm. Я использовал pyinstaller для создания одного исполняемого файла моего пакета python. Когда я запускаю исполняемый файл с использованием командного файла, я получаю ошибку импорта, в частности, pandas не удалось импортировать. Есть ли причина, по которой pyinstaller также не собирал зависимости пакетов в моей виртуальной среде?

Заранее спасибо за любую помощь!

У меня есть следующие 2 ошибки: (1) ModuleNotFoundError: нет модуля с именем 'pandas._libs.tslibs.np_datetime'

(2) Файл "site-packages \ pandas__init __. Py", строка 35, в Ошибка импорта: расширение C: ни один модуль с именем «pandas._libs.tslibs.np_datetime» не создан. Если вы хотите импортировать панд из исходного каталога, вам может потребоваться запустить 'python setup.py build_ext --inplace --force', чтобы сначала создать расширения C.

1 Ответ

0 голосов
/ 04 июля 2018

Существует один пип-скрипт для каждой виртуальной среды. Поэтому, когда вы устанавливаете модуль python, он устанавливается в каталог имя_проекта \ venv \ Lib \ site-packages .

Когда вы запускаете pyinstaller из терминала, чтобы сделать исполняемый файл, pyinstaller проверяет наличие зависимостей в Sys.path . Но этот путь не включает каталог projectname \ venv \ Lib \ site-packages . Поэтому pyinstaller не может найти эти конкретные зависимости. В таких случаях выдается предупреждение. Это предупреждение можно найти в 'warnname.txt' рядом с исполняемым файлом.

РЕДАКТИРОВАТЬ: Как настроить pycharm для запуска pyinstaller

  1. Сначала вам нужно добавить pyinstaller в интерпретатор проекта. enter image description here
  2. Затем вам нужно настроить рабочие конфигурации. enter image description here

    enter image description here

    Имя скрипта: Путь к вашему скрипту Python
    рабочий путь: Местоположение проекта

    оставить параметры переводчика такими, как они есть на изображении.

  3. Запустите pyinstaller. Вы можете найти ваш .exe в каталоге dist .

  4. Если ошибка «Модуль не найден» все еще не устранена. Вы можете добавить скрытый хук импорта и указать имена отсутствующих модулей. Перейдите к

Путь проекта \ venv \ Lib \ site-packages \ PyInstaller \ hooks

и создайте новый «hook-pandas.py» (hook-modulename.py) сценарий и создайте список скрытых модулей импорта, подобных этому.

hiddenimports = ['pandas._libs.tslibs.np_datetime','pandas._libs.tslibs.nattype','pandas._libs.skiplist']
  1. И снова запустите pyinstaller, и теперь он должен работать.
...