解决pyinstall打包python文件遇到的问题

博客介绍在Windows 7系统下,基于Anaconda和Python 3.5.2进行打包操作时遇到的问题及解决办法。先是因未安装setuptools报错,解决后打包工程代码又因cffi报错,安装cffi后打包成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、环境说明

    Windows7,Anconda+Python3.5.2,64位系统。

2、开始安装

pip install pyinstall

安装成功,一切看起来很顺利,但实际上当你运行打包代码的时候,可能出现如下问题

pyinstaller -F test.py


AttributeError: 'str' object has no attribute 'items'

通过网上查找资料,很快就解决了,原来是setuptools没有安装。看到有篇文章里写到报错虽然是在最后一行,但问题却是在日志信息中,其中有No moudle named “setuptools._vender”这个提示。

pip install setuptools

安装完成后,我就可以打包简单的test.py文件了,文件内容即print(“hello world”)。这看起来,似乎没问题了。但是当我打包我的工程代码的时候,发现又开始报错。

pyinstaller -F test.py


from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object

网上看了一下,一般setuptools运行完就可以打包程序了,可能这是python3.5的bug?通过大神一顿操作分析,我得知问题在于日志信息中的cffi报错,于是安装了cffi

pip install --upgrade cffi

安装完成后,我们再次进行打包,这下就成功了。

### 使用 PyInstaller 打包 Python 脚本为 EXE 文件的方法 为了将 Python 脚本转换为独立的可执行文件EXE),可以使用 `PyInstaller` 工具完成此操作。以下是详细的说明: #### 1. 安装 PyInstaller 在开始之前,需要确保已安装 `PyInstaller`。可以通过以下命令进行安装: ```bash pip install pyinstaller ``` 对于国内用户,可能由于网络原因导致安装失败,因此可以选择镜像源来加速安装过程[^3]: ```bash pip3 install pyinstaller -i https://pypi.douban.com/simple ``` #### 2. 准备工作 确认以下条件均已满足: - 已经配置好 Python 开发环境。 - 编写并调试完毕的目标 Python 脚本文件(如 `demo.py`)。 #### 3. 命令行切换至目标脚本所在的目录 通过 Windows 或 Linux 的终端进入存储 `.py` 文件的目录。例如,假设脚本位于桌面,则可以在命令提示符中输入如下命令: ```bash cd C:\Users\<用户名>\Desktop\ ``` #### 4. 执行打包命令 基本的打包命令结构如下: ```bash pyinstaller [选项] <脚本名>.py ``` 常用的选项及其含义包括: - `-F/--onefile`: 将所有依赖项压缩到单个 EXE 文件中。 - `-w/--windowed`: 如果应用程序不需要控制台窗口(GUI 应用程序),则加上该参数。 - `-i/--icon=<图标路径>`: 设置生成的 EXE 文件使用的图标文件。 完整的示例命令如下所示[^1][^2]: ```bash pyinstaller -F -w -i Boris.ico demo.py ``` 这条命令的作用是将 `demo.py` 打包成一个单独的无控制台窗口的应用程序,并指定图标为 `Boris.ico`。 #### 5. 查找生成的 EXE 文件 运行上述命令后,会在当前目录下创建两个主要文件夹——`build` 和 `dist`。其中,最终生成的 EXE 可执行文件会存放在 `dist` 文件夹内[^4]。 #### 6. 处理常见问题 尽管大多数情况下能够顺利生成 EXE 文件,但在某些特殊场景可能会遇到错误。这里列举一些常见的解决方案: - **RecursionError**: 当递归调用超过最大深度时发生。可通过调整递归限制解决[^5]。 - **ModuleNotFoundError 'pkg_resources'**: 表明缺少必要的模块支持。尝试更新 setuptools 版本来修复。 - **UnicodeDecodeError**: 字节解码异常通常是因为编码设置不当引起。检查源代码中的字符集声明是否正确。 --- ### 示例代码片段 以下是一个简单的 Python 脚本例子以及对应的打包指令: ```python # hello_world.py print("Hello, World!") ``` 对应打包命令: ```bash pyinstaller --onefile hello_world.py ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值