python - PipEnv:如何处理本地安装的 .whl 包

标签 python pipenv

我正在使用 PipEnv 来设置一个项目,并且我需要从预编译的二进制文件中安装一些包。在之前的项目中,我只是将 pipenv 文件从某个本地文件夹安装到我的环境中,但这似乎会导致锁定文件出现问题,如果其他人尝试从存储库安装,因为 pipfile 会跟踪本地路径,因此会引发错误。这方面的最佳做法是什么?我应该创建一个包存储库作为项目的一部分并从中安装吗?

最佳答案

您应该设置私有(private) PyPI 索引服务器,并且 configure Pipenv to use that server .

设置私有(private) PyPI 服务器对于像 pypiserver 这样的项目来说是微不足道的。 :

$ mkdir private_pypi && cd private_pypi
$ pipenv install   # create pipenv files
$ pipenv install pypiserver
$ mkdir packages
$ pipenv run pypi-server -p 8080 ./packages &

并将您的轮子放入 packages 目录的 projectname 子目录中,或者使用 twine 将您的包发布到服务器。

然后在项目 Pipfile 中添加一个 [[source]] 部分以指向服务器(要使用的 url 以 /simple 结尾) >,所以 http://hostname:8080/simple):

[[source]]
url = "http://hostname:8080/simple"
verify_ssl = false
name = "some_logical_name"

您可以使用默认的 name = "pypi" 部分作为指南。

[packages] 部分,指定用于这些私有(private)轮子的索引:

[packages]
wheel1 = {version="*", index="some_logical_name"}
wheel2 = {version="0.41.1", index="some_logical_name"}
some_public_project = "*"

同样,您可以显式命名任何已命名的索引,包括 index="pypi"。不添加 index="..." 限制让 Pipenv 搜索所有索引以寻找可能的分布。

对于在索引之外发布的二进制轮子(例如 those built by Christoph Gohlke ),您可以考虑只安装完整的轮子 URL:

pipenv install https://download.lfd.uci.edu/pythonlibs/l8ulg3xw/aiohttp-3.3.2-cp36-cp36m-win_amd64.whl

这确实会迫使每个人都在特定平台上使用您的 Pipfile。

关于python - PipEnv:如何处理本地安装的 .whl 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51528441/

相关文章:

python - 如何从类中运行随机方法?

python - 导入错误: cannot import name 'IncompleteRead' - Windows

python-3.x - 停用 pipenv 环境

python - 在Mac OS(M1和intel CPU)上使用pipenv安装mysqlclient永远不会成功

python - Pipenv锁: how to cache downloads for transfer to an offline machine

python - 使用python API在 Elasticsearch 中转储批量数据

python - 从向量中有效提取边列表的算法

python - 将 django 页面共享给没有帐户的用户

python - 使用 pandas 多索引中的条件函数编辑数据

python - 如何删除 PyCharm 创建的 virtualenv?