pyinstaller ImportError: расширение C: ни один модуль с именем np_datetime не собран - PullRequest
0 голосов
/ 01 июня 2018

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

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

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

Но после всего этого мне выдается сообщение об этой проблеме [см. Importerror] при запуске исполняемого файла.

enter image description here

Чрезвычайно трудно отладить это, потому что командная строка, отображающая ошибку, не остановится, а закроется почти сразу.

Аналогичные проблемы

Поиск предложений Я надеюсь на предложения по устранению неполадок Pyinstaller.Любые ресурсы для чтения были бы хороши.Обычно у меня нет проблем с python, так как в Pycharm есть несколько удобных инструментов отладки, которые помогут мне определить проблему

1 Ответ

0 голосов
/ 08 июня 2018

Я столкнулся с той же проблемой и нашел эту ветку, но мне удалось ее решить, заимствуя из ссылки , которую вы разместили (примерно 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 \-packages \ pandas_libs

и

C: \ Python27 \ Lib \ site-packages \ pandas_libs \ tslibs

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

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

Приветствия!

...