使用pyinstaller创建单个exe文件时导入错误

时间:2018-07-04 14:22:15

标签: python executable pyinstaller

我有一个涉及多个python模块的python软件包。该项目已在pycharm中创建。我已经使用pyinstaller创建了我的python包的单个可执行文件。当我使用批处理文件运行可执行文件时,出现导入错误,特别是熊猫导入失败。 pyinstaller为何还没有在我的虚拟环境中收集软件包依赖关系?

在此先感谢您的帮助!

我有以下2个错误: (1)ModuleNotFoundError:没有名为“ pandas._libs.tslibs.np_datetime”的模块

(2)文件“ site-packages \ pandas__init __。py”,第35行,在 ImportError:C扩展:没有构建名为“ pandas._libs.tslibs.np_datetime”的模块。如果要从源目录导入熊猫,则可能需要运行“ python setup.py build_ext --inplace --force”以首先构建C扩展。

1 个答案:

答案 0 :(得分:0)

每个虚拟环境都有一个pip脚本。因此,当您安装python模块时,它将安装到 projectname \ venv \ Lib \ site-packages 目录中。

从终端运行pyinstaller以生成可执行文件时,pyinstaller会检查 Sys.path 中的依赖项。但是该路径不包含 projectname \ venv \ Lib \ site-packages 目录。因此,pyinstaller无法找到那些特定的依赖项。在这种情况下,它会向您发出警告。可以在可执行文件附近的'warnname.txt'中找到这些警告。

编辑:如何配置pycharm以运行pyinstaller

  1. 首先,您需要将pyinstaller添加到项目解释器中。  enter image description here
  2. 然后,您需要设置运行配置。  enter image description here

    enter image description here

    脚本名称:Python脚本的路径
     工作路径:项目位置

    保留解释器选项在图像中的位置。

  3. 运行pyinstaller。您可以在 dist目录中找到您的 .exe

  4. 如果“找不到模块”错误仍然存​​在。您可以添加一个隐藏的导入钩子并指定缺少的模块的名称。导航到

  

项目路径\ venv \ Lib \ site-packages \ PyInstaller \ hooks

并创建一个新的“ hook-pandas.py” (hook-modulename.py)脚本,并列出这样的隐藏导入模块。

hiddenimports = ['pandas._libs.tslibs.np_datetime','pandas._libs.tslibs.nattype','pandas._libs.skiplist']
  1. 然后再次运行pyinstaller,它现在应该可以工作了。