pyinstaller ImportError: расширение C: модуль с именем np_datetime не создан

Я использую виртуальную среду с Python 2.7 для моей программы. Кажется, есть проблема после создания исполняемого файла в Windows. Я запустил venv/Scripts/pyinstaller.exe -F main.py все, кажется, хорошо. Но когда я нажимаю на созданный исполняемый файл main.exe. Есть ошибка.

Пробовал и проверял

  1. Я переустановил панд и pyinstaller
  2. Реализовал hook-pandas.py для папки hooks в среде. крюк-панда
  3. Убедитесь, что среда активирована.
  4. Проверено, что программа работает нормально перед сборкой исполняемого файла.
  5. Воссоздал окружающую среду.

Тем не менее, после всего этого мне выдается проблема [см. 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

папки и нашел точные названия модулей, в результате которых возникли ошибки.

Я надеюсь, что это решит вашу проблему так же, как и мою.

Ура!

Другие вопросы по тегам