pyinstaller ImportError: расширение C: модуль с именем np_datetime не создан
Я использую виртуальную среду с Python 2.7 для моей программы. Кажется, есть проблема после создания исполняемого файла в Windows. Я запустил venv/Scripts/pyinstaller.exe -F main.py все, кажется, хорошо. Но когда я нажимаю на созданный исполняемый файл main.exe. Есть ошибка.
Пробовал и проверял
- Я переустановил панд и pyinstaller
- Реализовал hook-pandas.py для папки hooks в среде. крюк-панда
- Убедитесь, что среда активирована.
- Проверено, что программа работает нормально перед сборкой исполняемого файла.
- Воссоздал окружающую среду.
Тем не менее, после всего этого мне выдается проблема [см. Importerror], когда я запускаю исполняемый файл.
Отлаживать это крайне сложно, потому что командная строка, отображающая ошибку, не остановится, а закроется почти сразу.
Ищу предложения Я надеюсь на предложения по устранению неполадок Pyinstaller. Любые ресурсы для чтения были бы хорошими. Обычно у меня нет проблем с питоном, так как в Pycharm есть несколько удобных инструментов отладки, которые помогут мне определить проблему
1 ответ
Я столкнулся с той же проблемой и нашел эту ветку, но мне удалось ее решить, заимствуя ссылку, которую вы опубликовали (о pandas._libs.tslibs.timedeltas
), так что спасибо вам за это!
В этой статье модуль, который привел к ImportError
был, на самом деле pandas._libs.tslibs.timedeltas
, если вы посмотрите на логи плаката. Но ошибка, с которой вы столкнулись, относится к np_datetime
вместо. Итак, из журналов трассировки я наконец понял, что код, который мы должны написать в hook-pandas.py
должно быть следующее:
hiddenimports = ['pandas._libs.tslibs.np_datetime']
Может быть, это решит вашу проблему, ОДНАКО, в моем случае, когда я np_datetime
вопрос, другой очень похож ImportError
возникли проблемы (также связанные со скрытым импортом в отношении панд), поэтому, если вы столкнетесь с теми же проблемами, просто определите hiddenimports
следующее:
hiddenimports = ['pandas._libs.tslibs.np_datetime','pandas._libs.tslibs.nattype','pandas._libs.skiplist']
TL; DR:
Вы можете сначала попытаться написать
hiddenimports = ['pandas._libs.tslibs.np_datetime']
в hook-pandas.py
, Однако, если по какой-то причине вы столкнулись с теми же проблемами, что и я, попробуйте
hiddenimports = ['pandas._libs.tslibs.np_datetime','pandas._libs.tslibs.nattype','pandas._libs.skiplist']
Если вы хотите погрузиться глубже (или столкнуться с другими пандами ImportError
чем те, что я сделал), это код в панд __init__.py
ссылка в вашем журнале трассировки (строки с 23 по 35):
from pandas.compat.numpy import *
try:
from pandas._libs import (hashtable as _hashtable,
lib as _lib,
tslib as _tslib)
except ImportError as e: # pragma: no cover
# hack but overkill to use re
module = str(e).replace('cannot import name ', '')
raise ImportError("C extension: {0} not built. If you want to import "
"pandas from the source directory, you may need to run "
"'python setup.py build_ext --inplace --force' to build "
"the C extensions first.".format(module))
От этого я пошел в
C:\ python27\Lib\ сайт-пакеты \pandas_libs
а также
C:\ python27\Lib\ сайт-пакеты \pandas_libs\tslibs
папки и нашел точные названия модулей, в результате которых возникли ошибки.
Я надеюсь, что это решит вашу проблему так же, как и мою.
Ура!