我开始看pipenv
看起来还不错。我唯一担心的是,我的大部分项目都涉及numpy
, scipy
和其他一些不那么小的图书馆。
目前管理我的项目的方式:
I have pyenv
and pyenv-virtualenv
安装。我有一些(目前是 4 个)具体的virtualenvs
每个都迎合一个type的项目。项目本身有.pyenv-version
设置,我有自动加载 virtualenv 功能pyenv
已启用。如果我需要共享一个项目,我会生成一个requirements.txt
with pip freeze -l
来自virtualenv
.
所以在我当前的设置中,我有X
项目数量和Y, Y << X
数量virtualenvs
,总共需要几 GB 的硬盘空间。请注意,由于像这样的大型库numpy
每一个virtualenvs
相当大,大约 700-900 MB。
我的问题:
据我所理解,pipenv
默认情况下会创建一个virtualenv
对于我的所有项目,我的硬盘空间占用了吗?virtualenvs
会大幅增加。我感兴趣的是:
- 可以分享吗
pipenv
跨多个项目的环境,使用exactly相同的依赖关系?即多个pipenv
加载相同的配置virtualenv
?
- 如果没有,是否可以生成
pipenv
配置文件来自virtualenv
我设置了pyenv
?即我不会使用pipenv
为了实际运行我的项目,我不会创建任何virtualenvs
with pipenv
,但我会创建pipenv
用于共享项目的配置文件(在本例中,可能与requirements.txt
以及)。
edit:
我重写了大部分问题以使其更清楚。
pipenv
似乎不太适合您的特定工作流程,因为它以项目为中心而不是以环境为中心。 pipenv
将虚拟环境视为不稳定的环境,并保留在情况需要时自由更改其的权利。您可以使用它,但在环境发生变化的情况下,保持所有项目同步将是一件很痛苦的事情,因为pipenv
'是严格审查。
You can显式指定虚拟环境pipenv
用于项目通过创建一个.venv项目根目录中的文件及其路径(通常,virtualenvs 是在特定位置创建的,具有自动生成的名称,其中包含项目路径的哈希值)。这似乎没有记录。
然而,pipenv
,不像virtualenv
,检查并强制虚拟环境具有满足条件的确切模块集Pipfile
以及生成的文件中指定的确切“最后测试的配置”Pipfile.lock
.
- 此外,如果你生成
Pipfile
from requirements.txt
,它将指定确切的包版本并包括所有依赖项 -而根据设计,它应该包含更多智能信息。
因此,如果您更改环境中的任何软件包版本,您将需要:
- 全部更新
Pipfile.lock
受影响的项目中的 s(例如复制更改的项目)。随着生成的Pipfile
,您可能会删除它们。
- 全部更新
Pipfile
如果有更改,则将受影响的项目中的 s 更改为新的软件包版本(例如,复制更改的版本)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)