使用Conda环境搭配Nuitka编译含PIL的Python程序时出现ImportError问题求助
Conda环境搭配Nuitka编译含PIL的Python程序时出现ImportError问题求助
我最近在开发一个将PDF转换为图片的小程序,选用了pdf2image库,并用Nuitka将代码编译为exe文件。编译过程顺利完成,但运行生成的exe时却遭遇了ImportError,问题卡在PIL.Image模块导入_imaging的环节。
错误日志
$> # run the programm. $> .\p2i.dist\p2i.exe Traceback (most recent call last): File "C:\gitjob\p2i\P2I~1.DIS\p2i.py", line 6, in <module> File "C:\gitjob\p2i\P2I~1.DIS\pdf2image\__init__.py", line 5, in <module pdf2image> File "C:\gitjob\p2i\P2I~1.DIS\pdf2image\pdf2image.py", line 15, in <module pdf2image.pdf2image> File "C:\gitjob\p2i\P2I~1.DIS\PIL\Image.py", line 97, in <module PIL.Image> ImportError
最小复现测试
经过多次测试,我发现一个仅导入PIL.Image的极简脚本,编译后同样会触发该错误:
极简测试脚本 p2i.py
from PIL import Image if __name__ == "__main__": print("Test")
最初的环境搭建命令(触发问题的环境)
我最初使用Conda创建环境并安装所有依赖,命令如下:
# Anaconda Environment Path $env_path = "(arbitrary env path)" # Create an Anaconda Environment conda create -p $env_path python=3.10 -y conda install -p $env_path pillow pdf2image -y conda install -p $env_path -c conda-forge nuitka -y
我在网上搜索了相关问题(PIL._imaging导入失败),折腾了两三天也没找到解决办法。后来我换了个思路,怀疑是不是环境本身的问题,于是新建了一个环境,改用pip安装所有依赖:
测试用的新环境搭建命令(解决问题的环境)
# Anaconda Environment Path $env_path = "(arbitrary env path)" # Create an Anaconda Environment conda create -p $env_path python=3.10 -y conda activate $env_path # 不使用conda安装包,改用pip pip install pillow pdf2image nuitka
结果出乎意料,用这个环境编译时,不需要添加任何额外的Nuitka参数,生成的exe就能正常运行。
现在我想请教大家:
- 为什么用Conda安装依赖后,Nuitka编译会出现这个ImportError?
- 有没有办法在Conda环境下解决这个问题,而不用切换到全pip安装的方式?
备注:内容来源于stack exchange,提问作者KLc3088
相关产品推荐
相关产品推荐

