我正在尝试开发一个Python库,最终将放在PyPI上。
这是我在另一个项目中使用的库,它从 PyPI 中提取它。
我在自己的项目存储库中对库进行了单元测试。但我主要通过主应用程序测试正在使用的库。
我以前在本地"发布"库,使用
pip install -e
以便另一个存储库中的主项目可以从本地包中提取它,我可以在上下文中对其进行测试。
但现在我要搬到pipenv。我希望能够做同样的事情。但是,如果我将依赖项放在 Pipenv 文件中,它似乎试图从真正的 PyPI 中提取,而不是我的本地存储。
如何使用 Pipenv 设置此工作流程?
Pipenv 可以安装来自各种来源的软件包,而不仅仅是来自 PyPI。pipenv 的 CLI 在设计上与 pip 非常相似,因为许多pipenv install
参数在内部通过管道传输到pip install
。 您可以使用本地路径 或带有 VCS 前缀的 URL 作为带有 pipenv 或 pip 的包说明符。
命令行使用情况
首先转到主应用程序的项目文件夹(包含 Pipfile)。然后运行
$ pipenv install --dev -e "/path/to/your/local/library"
如果库由 Git 或 SVN 控制,您也可以使用如下所示的 URL:
$ pipenv install --dev -e git+https://github.com/your_user_id/libraryname@develop
如果库的 Git 存储库存储在本地,请使用file://
而不是https://github.com
。 还支持FTP和SSH等其他协议。
上面的命令将从源中提取包,安装它并修改当前文件夹中的 Pipfile 以包含包。
pipfile use
通常您不需要直接修改 Pipfile。有关 pipfile 中的高级设置,请参阅 pipfile 的规格。以下是pipfile的一些示例条目
[dev-packages]
mylibrary = { git = 'https://github.com/xxx/mylibrary.git', ref = '0.0.1', editable = true }
"e1839a8" = {path = "/path/to/your/local/library2", editable = true}
"e51a27" = {file = "/path/to/your/local/library1/build/0.0.1.zip"}
设置私有 PyPI 索引
虽然这是矫枉过正,但为了完整,设置一个私有的 PyPI 服务器也可以工作。