3

如何使用 pipenv 以默认使用站点包而不是使用 PyPi 索引的方式安装包。对于上下文,我的站点包文件夹中有一个公司批准的包列表。

我仍然想使用 venv 以便正确捕获这些依赖项,而不是直接使用站点包。

4

1 回答 1

5

你有一个已经安装了某些软件包的 python 安装。virtualenv 创建一个有自己的安装目录的环境,它不与其他 virtualenv 环境共享库(并且可选地也不访问全局安装的库)。您的问题听起来像是您可能想与新的 virtualenv 共享库。无法访问全局站点包现在是默认行为。但是,如果这适合您的用例,您可以覆盖默认值。但是site-packages 文件夹不能作为 pip 的源,但可以与另一个虚拟环境共享 - 但是(重新)创建版本控制问题 virtualenv 是为了解决

为了可重复性,您可以使用pip freeze 冻结当前的包列表。如果你想在另一个系统上重新创建这个 python 安装,你需要告诉 pip 在哪里可以找到(任何受限制的)源包,如果它不应该使用 PyPI。如果公司批准的软件包在 PyPI 上可用 - 那么只需从您的默认 python 安装冻结的 requirements.txt 显式构建新环境。你甚至可以使用可编辑的安装来构建一个 python 环境——如果你可以访问任何公司开发的 python 包的源代码。pip 有许多选项来安装来自不同来源的软件包. 选项 7 和 8 让您了解如何从源存档或备用软件包存储库或本地文件系统进行安装。

pipenv 发明了一种叫做Pipfile的东西。此文件固定包依赖项并为依赖项定义源(如 PyPI)。您必须找出如何引用替代来源。[[source]]条目的顺序可能很重要。

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[[source]]
url = "http://pypi.home.kennethreitz.org/simple"
verify_ssl = false
name = "home"

[dev-packages]
url = "http://mycompany.package.repo/simple/"
verify_ssl = false
name = "company-approved-packages"

[packages]
requests = "*"
于 2017-09-27T10:38:53.850 回答