pip - 如何使用需求文件以可编辑模式从本地目录安装相互依赖的包
问题描述
我遇到了 pip 无法从本地目录安装可编辑包的问题。我能够使用诸如pip install -e pkg1
. 我想使用一个requirements.txt
文件来自动化未来的安装,因为我的同事将使用相同的包。我理想的开发工作流程是让每个开发人员从版本控制中签出源代码并运行pip install -r requirements.txt
. 需求文件会将所有包指定为可编辑的,因此我们可以在不需要.pth
文件的情况下导入代码,但我们不必不断更新我们的环境。通过使用命名空间包,我们可以将导入语义与文件结构分离。
但这行不通。
我有一个包含如下软件包的目录:
index/
pkg1/
src/
pkg1/
__init__.py
pkg1.py
setup.py
pkg2/
src/
...etc.
每个setup.py
文件都包含以下内容:
from setuptools import setup, find_packages
setup(
name="pkg1",
version="0.1",
packages=find_packages('src'),
package_dir={'':'src'},
)
我requirements.txt
使用 生成了我的文件pip freeze
,它产生了如下内容:
# Editable install with no version control (pkg1==0.1)
-e c:\source\pkg1
# Editable install with no version control (pkg2==0.1)
-e c:\source\pkg2
...etc...
当 pip 对它为自己创建的需求文件感到窒息时,我感到很惊讶:
(venv) C:\Source>pip install -r requirements.txt
c:sourcepkg1 should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+
此外,我们的一些包依赖于我们的其他包,而 pip 在识别这些依赖项方面绝对无用。我已经求助于按依赖顺序手动安装软件包。
也许我在这里将点子推到了极限。到目前为止,在线文档和帮助没有帮助。大多数资源都讨论了可编辑安装、从需求文件安装、包依赖项或命名空间包,但从来没有同时讨论所有这些概念。通常当在线帮助稀缺时,这意味着我正在尝试使用一个工具来完成它不打算做的事情,或者我发现了一个错误。
这个开发过程可行吗?我需要制作私人包索引或其他东西吗?
解决方案
推荐阅读
- c# - C# XML 反序列化具有其他名称的数组元素
- uml - 敏捷方法和 Scrum,我怎样才能完成这个文档模板?
- javascript - 如何有效地检查数组是否包含特定数组
- spring-integration - 配置 Dynamic TCP Server 以使用 Java DSL 向连接 Spring Integration 的客户端发送消息
- mongodb - MongoDB中$project、$filter和$match的区别
- c# - 如何在单独的文件中从 web.config 中提取部分
- javascript - 如何使用模型使用类或接口在角度 5 的视图中打印我的数据?
- javascript - 类型错误:.splice 云函数
- dagger-2 - Dagger2 中的参数化限定符
- azure - 如何在 IoT 中心路由中添加多个条件 - 查询字符串