You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:42:01