创建内部使用的Python包时pip安装提示找不到匹配版本
问题根因
你直接执行pip install cmk时,pip默认会从公共PyPI仓库检索包,你本地开发的私有包并未上传到公共PyPI,因此会触发找不到匹配分发版本的报错。
解决方案
1. 本地环境测试安装
在setup.py所在的项目根目录(即C:\mypackages\cmk)执行对应命令即可:
- 普通安装:直接将包安装到当前Python环境
pip install . - 可编辑模式安装:适合开发阶段,修改包代码后无需重新安装即可生效
pip install -e .
2. 跨环境分发给其他开发者
首先将包打包为标准可分发格式:
- 先安装打包依赖:
pip install setuptools wheel build - 执行打包命令:
python -m build - 打包完成后会在项目根目录生成
dist文件夹,内有.whl(wheel格式包)和.tar.gz(源码包)两个文件,将任意一个文件发给其他开发者,对方执行以下命令即可安装:pip install 下载的包文件路径/xxx.whl
3. 团队内部高频使用方案
如果团队内需要频繁更新、安装该包,可以搭建内部私有PyPI源,将打包好的包上传到私有源后,所有成员都可以通过指定私有源安装:
pip install --index-url 你的内部PyPI源地址 cmk
额外优化建议
补全setup.py依赖配置
你当前的setup.py未声明依赖,其他用户安装时不会自动安装requirements.txt里的依赖,建议修改为以下格式:
from setuptools import setup from pathlib import Path # 读取requirements.txt的依赖列表 req_path = Path(__file__).parent / "requirements.txt" with open(req_path, "r", encoding="utf-8") as f: requires = [line.strip() for line in f if line.strip() and not line.startswith("#")] setup( name='cmk', version='0.1', packages=['cmk'], install_requires=requires, # 可补充其他元信息方便维护 author="你的团队名称", description="内部cmk业务工具包" )
补充包标识文件
请确认内层cmk业务代码目录下存在空的__init__.py文件,虽然Python 3.3+支持隐式命名空间包,但保留该文件可以避免部分版本的setuptools识别不到包结构。
内容的提问来源于stack exchange,提问作者Fahd Mirza
相关产品推荐
相关产品推荐

