You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用uv以可编辑模式安装自定义Python包?

如何使用uv以可编辑模式安装自定义Python包?

嘿,我明白你遇到的问题了——用uv代替venv后,原本顺手的pip install -e .突然不管用,脚本找不到自己的src模块,确实挺闹心的。我来帮你捋清楚问题出在哪,以及怎么解决:

问题根源

你当前的pyproject.toml只配置了项目的基础信息,但没有告诉打包工具(比如setuptools)要从src目录里加载你的自定义包。所以哪怕你执行了uv run pip install -e .,实际上并没有把src下的模块真正安装到虚拟环境的可编辑路径里,脚本自然找不到这些模块。

另外,其实不用绕路调用pip,uv本身就支持可编辑安装,用它的原生命令更靠谱。

解决方案步骤

1. 修正pyproject.toml的包配置

打开你的pyproject.toml,在现有内容基础上,添加包的查找规则。有两种方式可选:

方式一:手动指定包名

如果你的src下的包结构明确(比如src.backendsrc.utils),可以直接列出来:

[project]
name = "test-repo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = []
# 新增:指定要包含的包
packages = ["src.backend", "src.utils"]
方式二:自动查找src下的所有包

如果你的src目录下有多个子包,想自动识别的话,推荐用setuptools的自动查找配置:

[project]
name = "test-repo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = []

# 新增:让setuptools自动从src目录找包
[tool.setuptools.packages.find]
where = ["src"]

2. 用uv进行可编辑安装

现在直接用uv的原生命令来安装本地包,二选一即可:

  • 推荐方式(会把本地包添加到依赖列表):
uv add -e .
  • 或者用uv的pip命令(和原有的pip逻辑更接近):
uv pip install -e .

3. 验证并运行脚本

安装完成后,你可以用uv pip list查看,应该能看到test-repo处于可编辑模式(标记为editable)。

之后再运行你的脚本:

uv run scripts/importmylist.py

这时候应该就能正常导入src.utils里的模块了!

额外提示

  • 尽量用uv的原生命令代替uv run pip ...,这样能更好地利用uv的缓存和环境管理优势,避免兼容性问题。
  • 如果你的项目之前用setup.py,其实uv也能兼容,但用pyproject.toml是现在Python打包的标准方式,更推荐。

备注:内容来源于stack exchange,提问作者ava_punksmash

火山引擎 最新活动