PyInstaller打包ModuleNotFoundError: No module named ‘xxxx‘

在venv环境下,通过命令行pyinstaller执行打包命令,打包过程没有异常,但是打包成功后,执行在venv环境下,在命令行执行pyinstaller进行打包,打包过程一切正常,打包成功后,执行dist/xxx.exe文件时,出现如下类似错误:

Traceback (most recent call last):
  File "main.py", line 4, in <module>
    import jcw
  File "PyInstaller\loader\pyimod03_importers.py", line 531, in exec_module
  File "jcw.py", line 3, in <module>
    import pandas as pd
ModuleNotFoundError: No module named 'pandas'

解决方式:

由于运行环境为venv虚拟环境,所以命令行打包时可能使用的是计算机中python的安装环境,也就是全局环境和依赖库,导致打包时没能将所需模块包含进去。

使用pyinstaller官网的另一种打包方式,python代码形式运行打包命令,如:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import PyInstaller.__main__
import os


if __name__ == '__main__':
    pyi_args = [
        '--upx-dir=F:\\soft\\upx-3.96-win64',
        '--clean',
        '--add-data={0};.'.format(os.path.realpath('cfg.ini')),
        '--add-binary={0};driver'.format(os.path.realpath('driver/chromedriver.exe')),
        '--name=demo',
        'main.py',
        '-y'
    ]
    print("pyinstaller " + " ".join(pyi_args))
    PyInstaller.__main__.run(pyi_args=pyi_args)

 

网上搜索的几种方式没起效(可以试试自己环境是否可以):

1.  将import语句从文件头部移到代码块中

2.  命令行使用--hidden-import=缺失模块

 

参考:

1. StackOverflow

2. pyinstaller

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值