首页 > 解决方案 > 如何在每个项目的基础上设置 PIPENV_VENV_IN_PROJECT

问题描述

我希望 pipenv 为$PROJECTDIR/.venv签出项目的每个人自动创建它的 virtualenv。

到目前为止,我只看到以下选项有效,但没有一个令人满意:

我尝试了以下方法:

那么,如何在每个项目的基础上设置 PIPENV_VENV_IN_PROJECT?

标签: pythondirectoryvirtualenvprojectpipenv

解决方案


自己来回答这个问题,这确实是可能的!

短篇故事:

只需自己创建一个空的 .venv 目录。Pipenv 会自动选择它。

很长的故事:

请注意,pipenv 问题跟踪器中存在许多问题,这些问题给人以 pipenv 开发人员不想提供此功能的错误印象。然而,这些问题只是描述了实现这一目标的其他方法,而这些额外的方法被拒绝了。

但在那一团糟中,有一条评论实际上很有帮助:

techalchemy 于 2018 年 12 月 12 日发表评论

你可以做的事情:

  1. 只需自己创建 .venv。Pipenv 将使用它。
  2. 使用 direnv 之类的工具来激活每个目录的此设置
  3. 全局设置envvar
  4. 在项目根目录中创建一个名为 .venv 的文件,其内容只是 virtualenv 根目录的路径

对于第 1 点和第 4 点,pipenv 会自动选择它

注意:如果您想使用pipenv当前 Debian/Stable (Buster) 附带的,第 4 点将不起作用,因为此功能是在更高pipenv版本中引入的。但是,第 1 点效果很好。对于 Python 3,这意味着:

python3 -m virtualenv -p python3 .venv
pipenv install ...  # resp. pipenv sync

推荐阅读