我遇到了同样的问题并找到了这个帖子,但我设法解决了它借用reference you posted(关于pandas._libs.tslibs.timedeltas),所以谢谢你!
在那篇文章中,导致ImportError 的模块实际上是pandas._libs.tslibs.timedeltas,如果您查看发布者的日志。但是你和我遇到的错误是指np_datetime。所以,从traceback的日志中,我终于知道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']
如果您想深入了解(或遇到与我所做的不同的 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
文件夹并找到导致错误的模块的确切名称。
我希望它能像我一样解决你的问题。
干杯!