如何使用Poetry安装Stem指定git分支并解决版本识别报错
解决Stem maint分支通过Poetry安装的版本解析报错问题
根因说明
Poetry解析Git来源的依赖时,默认不会执行setup.py的动态逻辑,仅做静态字段提取,Stem原生的动态版本计算逻辑会导致Poetry无法识别版本号,即使你手动修改了setup.py的版本字符串,Poetry也可能因为找不到符合PEP 621规范的配置文件继续报错。你可以选择以下两种方案解决:
方案1:修改你fork的Stem仓库(长期可用)
1. 简化setup.py配置
删除原setup.py中所有动态计算版本、读取外部文件的逻辑,替换为纯静态配置,示例如下:
from setuptools import setup setup( name="stem", version="1.8.2", # 可根据maint分支实际迭代版本自行调整 description="Python controller library for Tor", author="Damian Johnson", packages=["stem", "stem.client", "stem.descriptor", "stem.interpreter", "stem.response", "stem.util"], python_requires=">=3.6", classifiers=[ "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Programming Language :: Python :: 3", "Topic :: Security", "Topic :: Software Development :: Libraries", ] )
2. 新增pyproject.toml文件
在仓库根目录新建pyproject.toml,写入标准构建配置:
[build-system] requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta" [project] name = "stem" version = "1.8.2" # 与setup.py中的版本号保持一致
3. 安装依赖
将修改提交到你fork仓库的maint分支后,执行安装命令即可:
poetry add git+https://你的fork仓库地址/stem.git#maint
方案2:无需修改上游仓库,直接配置本地项目
如果你不想维护fork的Stem仓库,可以直接在你自己的OnionShare项目的pyproject.toml中手动指定Stem的版本号,跳过Poetry的自动版本解析步骤:
[tool.poetry.dependencies] stem = { git = "https://github.com/torproject/stem.git", branch = "maint", version = "1.8.2" }
配置完成后执行poetry install即可完成安装。
内容的提问来源于stack exchange,提问作者mig5
相关产品推荐
相关产品推荐

