我有一个涉及多个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扩展。
答案 0 :(得分:0)
每个虚拟环境都有一个pip脚本。因此,当您安装python模块时,它将安装到 projectname \ venv \ Lib \ site-packages 目录中。
从终端运行pyinstaller以生成可执行文件时,pyinstaller会检查 Sys.path 中的依赖项。但是该路径不包含 projectname \ venv \ Lib \ site-packages 目录。因此,pyinstaller无法找到那些特定的依赖项。在这种情况下,它会向您发出警告。可以在可执行文件附近的'warnname.txt'中找到这些警告。
编辑:如何配置pycharm以运行pyinstaller
脚本名称:Python脚本的路径
工作路径:项目位置
保留解释器选项在图像中的位置。
运行pyinstaller。您可以在 dist目录中找到您的 .exe 。
如果“找不到模块”错误仍然存在。您可以添加一个隐藏的导入钩子并指定缺少的模块的名称。导航到
项目路径\ 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']