pyinstaller ImportError: C extension: No module named np_datetime not built
pyinstaller ImportError: C extension: No module named np_datetime not built
我正在 运行 为我的程序设置一个带有 Python 2.7 的虚拟环境。
在 windows 上创建可执行文件后似乎出现问题。
我运行venv/Scripts/pyinstaller.exe -F main.py
一切似乎都很好。但是当我点击创建的可执行文件时 main.exe。
有错误。
久经考验
- 我已经重新安装了 pandas 和 pyinstaller
- 实现了 hook-pandas.py 到环境中的 hooks 文件夹。
hook-pandas
- 确保环境已激活。
- 在构建可执行文件之前检查程序 运行 是否正常。
- 重新创建了环境。
但毕竟,当我 运行 可执行文件时,系统提示我这个问题 [请参阅 Importerror]。
调试这个非常痛苦,因为显示错误的命令提示符不会暂停,而是几乎立即关闭。
Similar issues
寻求建议
我希望获得对 Pyinstaller 进行故障排除的建议。任何可以阅读的资源都会很好。
通常,我使用 python 没有问题,因为 Pycharm 有几个方便的调试工具可以帮助我确定问题
我 运行 遇到了同样的问题并找到了这个线程,但我设法从 reference you posted 那里借来解决它(大约 pandas._libs.tslibs.timedeltas
),所以谢谢你!
在那篇文章中,如果您查看发布者的日志,导致 ImportError
的模块实际上是 pandas._libs.tslibs.timedeltas
。但是你和我 运行 的错误指的是 np_datetime
。所以,从回溯日志中,我终于想通了我们必须在 hook-pandas.py
中编写的代码应该是这样的:
hiddenimports = ['pandas._libs.tslibs.np_datetime']
也许仅此一项就可以解决您的问题,HOWEVER,就我而言,一旦我解决了 np_datetime
问题,就会出现其他非常相似的 ImportError
问题(也与关于 pandas 的 hiddenimports 相关),因此,如果您 运行 遇到相同的问题,只需按如下方式定义 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']
如果您想更深入地研究(或 运行 进入与我所做的不同的 pandas ImportError
),这是 pandas 中的代码__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\site-packages\pandas_libs
和
C:\Python27\Lib\site-packages\pandas_libs\tslibs
文件夹并找到导致错误的模块的确切名称。
我希望这能像解决我的问题一样解决您的问题。
干杯!
我正在 运行 为我的程序设置一个带有 Python 2.7 的虚拟环境。 在 windows 上创建可执行文件后似乎出现问题。 我运行venv/Scripts/pyinstaller.exe -F main.py 一切似乎都很好。但是当我点击创建的可执行文件时 main.exe。 有错误。
久经考验
- 我已经重新安装了 pandas 和 pyinstaller
- 实现了 hook-pandas.py 到环境中的 hooks 文件夹。 hook-pandas
- 确保环境已激活。
- 在构建可执行文件之前检查程序 运行 是否正常。
- 重新创建了环境。
但毕竟,当我 运行 可执行文件时,系统提示我这个问题 [请参阅 Importerror]。
调试这个非常痛苦,因为显示错误的命令提示符不会暂停,而是几乎立即关闭。
Similar issues
寻求建议 我希望获得对 Pyinstaller 进行故障排除的建议。任何可以阅读的资源都会很好。 通常,我使用 python 没有问题,因为 Pycharm 有几个方便的调试工具可以帮助我确定问题
我 运行 遇到了同样的问题并找到了这个线程,但我设法从 reference you posted 那里借来解决它(大约 pandas._libs.tslibs.timedeltas
),所以谢谢你!
在那篇文章中,如果您查看发布者的日志,导致 ImportError
的模块实际上是 pandas._libs.tslibs.timedeltas
。但是你和我 运行 的错误指的是 np_datetime
。所以,从回溯日志中,我终于想通了我们必须在 hook-pandas.py
中编写的代码应该是这样的:
hiddenimports = ['pandas._libs.tslibs.np_datetime']
也许仅此一项就可以解决您的问题,HOWEVER,就我而言,一旦我解决了 np_datetime
问题,就会出现其他非常相似的 ImportError
问题(也与关于 pandas 的 hiddenimports 相关),因此,如果您 运行 遇到相同的问题,只需按如下方式定义 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']
如果您想更深入地研究(或 运行 进入与我所做的不同的 pandas ImportError
),这是 pandas 中的代码__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\site-packages\pandas_libs
和
C:\Python27\Lib\site-packages\pandas_libs\tslibs
文件夹并找到导致错误的模块的确切名称。
我希望这能像解决我的问题一样解决您的问题。
干杯!