如何在Python的setup.py中引入本地.zip格式依赖包?
如何在setup.py中配置本地zip格式依赖包
针对你的场景,要把本地的StreamingDataReader.zip纳入Python包的安装流程,有两种靠谱的方案,下面结合你的项目结构逐一说明:
方案1:使用PEP 508兼容的本地依赖写法(推荐,适用于pip≥19.0)
这种方式是当前官方推荐的写法,不需要额外命令行参数,只要你的pip版本在19.0及以上就能直接用。
修改你的setup.py,加入对本地zip包的引用,代码如下:
from setuptools import setup, find_packages import os # 获取zip包的绝对路径,避免相对路径带来的工作目录问题 zip_dep_path = os.path.abspath("vendor/dependencies/StreamingDataReader.zip") setup( name="myproject", version="0.1.0", packages=find_packages(), install_requires=[ # 用PEP 508格式指定本地依赖 f"StreamingDataReader @ file://localhost/{zip_dep_path}" ] )
安装方式
直接在项目根目录执行:
pip install .
如果你的pip版本低于19.0,先升级pip:
pip install --upgrade pip
方案2:使用dependency_links(兼容旧环境,不推荐新项目使用)
这个方式依赖dependency_links参数,不过在新版setuptools和pip中已被标记为弃用,但如果你的项目需要兼容旧环境,可以尝试:
修改setup.py如下:
from setuptools import setup, find_packages import os zip_dep_path = os.path.abspath("vendor/dependencies/StreamingDataReader.zip") setup( name="myproject", version="0.1.0", packages=find_packages(), install_requires=[ "StreamingDataReader" # 声明依赖包名称 ], dependency_links=[ # 指定本地zip包的绝对路径 f"file:///{zip_dep_path}" ] )
安装方式
安装时需要加上--process-dependency-links参数,让pip处理依赖链接:
pip install . --process-dependency-links
注意事项
- 确保你的
StreamingDataReader.zip本身是一个可安装的Python包:zip包内部应该包含setup.py、pyproject.toml或者符合Python包结构的内容,否则安装会失败。 - 使用绝对路径可以避免安装时因工作目录不同导致的路径问题,所以代码里用
os.path.abspath获取路径是很有必要的。
内容的提问来源于stack exchange,提问作者renatodamas
相关产品推荐
相关产品推荐

