使用Pipenv开发Python库

时间:2019-04-01 01:10:36

标签: python pipenv

我正在尝试开发一个Python库,该库最终将放在PyPI上。

这是我在另一个项目中使用的库,可从PyPI中提取它。

我在自己的项目存储库中有该库的单元测试。但是我主要通过主应用程序测试正在使用的库。

我以前是使用

在本地“发布”该库的
pip install -e

以便其他存储库中的主项目可以从本地程序包中提取它,而我可以在上下文中对其进行测试。

但是现在我要移到pipenv。我希望能够做到这一点。但是,如果我将依赖项放在Pipenv文件中,它似乎试图从真正的PyPI中提取,而不是从本地存储中提取。

如何使用Pipenv设置此工作流程?

1 个答案:

答案 0 :(得分:6)

Pipenv可以从各种来源安装软件包,而不仅仅是PyPI。 CLI的用法与pipa feature of pipenv)非常相似。您可以将local pathURL with CVS prefix传递给pipenv install。 Pipenv会将包相应地添加到Pipfile。

CLI使用情况

首先转到主应用程序的项目文件夹(其中包含Pipfile)。然后运行

$ pipenv install --dev -e "/path/to/your/local/library"

如果该库由Git或SVN控制版本,则您也可以使用如下网址:

$ pipenv install --dev -e git+https://github.com/your_user_id/libraryname@develop

如果您的库的Git存储库存储在本地,请使用file://而不是https://github.com。还支持其他协议,例如FTP和SSH。

上面的命令将从源文件中提取软件包,进行安装并修改当前文件夹中的Pipfile以包含该软件包。

Pipfile用法

通常,您不需要直接修改Pipfile。有关pipfile中的高级设置,请参阅Pipfile's specs。以下是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索引

尽管这可能会适得其反,但是为了完整起见,设置private PyPI服务器也是可以的。