pyinstaller 导入错误 : C extension: No module named np_datetime not built

标签 pyinstaller timedelta

我正在为我的程序运行一个带有 Python 2.7 的虚拟环境。
在windows上创建可执行文件后似乎有问题。
我跑了 venv/Scripts/pyinstaller.exe -F main.py
一切似乎都很好。但是当我点击创建的可执行文件主程序 .
有一个错误。

久经考验

  • 我已经重新安装了 pandas 和 pyinstaller
  • 将 hook-pandas.py 实现到环境中的 hooks 文件夹。
    hook-pandas
  • 确保环境已激活。
  • 在构建可执行文件之前检查程序是否运行良好。
  • 重新创建环境。

  • 然而毕竟,当我运行可执行文件时,会提示我这个问题 [参见 Importerror]。

    enter image description here

    调试这个非常痛苦,因为显示错误的命令提示符不会暂停,而是几乎立即关闭。

    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']
    

    也许仅此一项就可以解决您的问题,然而 ,就我而言,一旦我解决了 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

    文件夹并找到导致错误的模块的确切名称。

    我希望这能解决你的问题,就像我的问题一样。

    干杯!

    关于pyinstaller 导入错误 : C extension: No module named np_datetime not built,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50635881/

    相关文章:

    python-3.x - 无法对未注册的加载程序类型执行此操作

    python - 减少Python中的天数

    python - 无限递归向从 UTC 创建的 SimpleDate python 对象添加天数

    python - 打包应用程序时如何排除不必要的Qt *.so 文件?

    python - 使用 Pyinstaller 问题创建 Python Tkinter exe 文件

    build - Pyinstaller - 从 os.system (gdal_translate) 调用 GDAL

    pandas - 如何将对象转换为小时并添加到日期?

    libgdx - 渲染方法 libgdx 中的 Delta 值

    python - Pandas 的负时差

    python - 属性错误: 'Settings' object has no attribute 'TEMPLATE_CONTEXT_PROCESSORS'