Python3.10.6下自定义包构建pex文件失败求助
解决Python3环境下PEX打包本地自定义包失败的问题
问题原因
执行pex hello -e hello:hello -o hello.pex时,PEX会默认尝试从PyPI下载名为hello的包,但你的hello是本地自定义包,因此出现No matching distribution found for hello错误。同时原setup.py的配置也不符合包结构要求。
解决步骤
1. 修正setup.py配置
你的项目是标准包结构(包含__init__.py的文件夹),原setup.py中py_modules=['hello']仅适用于单个独立模块文件,需改为packages=['hello']以识别整个包:
from distutils.core import setup setup( name='hello', version='0.0.1', packages=['hello'] )
2. 调整PEX打包命令
切换到hello包的父目录(即包含hello文件夹的目录),执行以下命令,明确指定从本地当前目录加载包:
pex . -e hello.hello:hello -o hello.pex
.:告诉PEX从当前目录读取本地包资源-e hello.hello:hello:指定入口点为hello包下hello.py模块中的hello函数
3. 验证结果
运行生成的pex文件:
./hello.pex
正常情况下会输出hello!。
额外注意事项
- 确保使用Python3版本的PEX,可通过
pex --version确认,若版本不符,重新安装:python3 -m pip install --upgrade pex - 不要进入
hello文件夹内部执行打包命令,必须在包的父目录操作
内容的提问来源于stack exchange,提问作者Leonardo Radillo escobar
相关产品推荐
相关产品推荐

