使用py2app打包PySide6项目时遇init_import_site导入错误求助
PySide6项目py2app打包macOS应用报错的解决方法
问题根源
这个错误是因为py2app打包时引入了系统Python的sitecustomize.py,该文件在site模块未完全初始化时就尝试修改其PREFIXES属性,触发了循环导入。
解决方法
临时重命名系统sitecustomize文件
找到报错里的sitecustomize.py路径:/opt/homebrew/Cellar/python@3.10/3.10.9/Frameworks/Python.framework/Versions/3.10/lib/python3.10/sitecustomize.py,将其重命名为sitecustomize.bak,然后重新执行打包命令python3 setup.py py2app -A。打包完成后再把文件名改回去即可。打包时添加--site-packages参数
执行打包命令时加上--site-packages,明确指定仅打包项目依赖的包,避免引入系统的site自定义文件:python3 setup.py py2app -A --site-packages在setup.py中配置排除sitecustomize
修改你的setup.py,在setup函数的options里添加排除规则:from setuptools import setup APP = ['main.py'] DATA_FILES = [] OPTIONS = { 'py2app': { 'exclude': ['sitecustomize'], # 其他py2app配置项 } } setup( app=APP, data_files=DATA_FILES, options=OPTIONS, setup_requires=['py2app'], )然后重新执行打包命令。
使用干净的虚拟环境打包
用Python自带的venv创建独立虚拟环境,避免系统site配置干扰:- 创建虚拟环境:
python3 -m venv venv - 激活虚拟环境:
source venv/bin/activate - 安装依赖:
pip install pyside6 py2app - 在虚拟环境中执行打包命令:
python3 setup.py py2app -A
- 创建虚拟环境:
内容的提问来源于stack exchange,提问作者Mario Fritsche
相关产品推荐
相关产品推荐

