python - 如何在每个项目的基础上设置 PIPENV_VENV_IN_PROJECT
问题描述
我希望 pipenv 为$PROJECTDIR/.venv
签出项目的每个人自动创建它的 virtualenv。
到目前为止,我只看到以下选项有效,但没有一个令人满意:
- 要求用户在全局范围内设置 PIPENV_VENV_IN_PROJECT=1,强制我的项目偏好用于他们的每个其他项目。
- 要求用户
PIPENV_VENV_IN_PROJECT=1 pipenv
在我的项目中始终通过“”调用 pipenv,如果他们运行pipenv
命令并忘记设置PIPENV_VENV_IN_PROJECT
. - 要求用户安装第三方工具
direnv
并提供.envrc
文件,添加另一个不明显的构建依赖项。
我尝试了以下方法:
- 向 Pipfile 添加一个类似 PIPENV_VENV_IN_PROJECT 的选项,但我找不到任何这样的 Pipfile 选项。
- 将 "
PIPENV_VENV_IN_PROJECT=1
" 放入$PROJECTDIR/.env
, 但这仅在 , 的子外壳内进行评估pipenv shell/run
,并且本身会被忽略pipenv
。
那么,如何在每个项目的基础上设置 PIPENV_VENV_IN_PROJECT?
解决方案
自己来回答这个问题,这确实是可能的!
短篇故事:
只需自己创建一个空的 .venv 目录。Pipenv 会自动选择它。
很长的故事:
请注意,pipenv 问题跟踪器中存在许多问题,这些问题给人以 pipenv 开发人员不想提供此功能的错误印象。然而,这些问题只是描述了实现这一目标的其他方法,而这些额外的方法被拒绝了。
但在那一团糟中,有一条评论实际上很有帮助:
techalchemy 于 2018 年 12 月 12 日发表评论
你可以做的事情:
- 只需自己创建 .venv。Pipenv 将使用它。
- 使用 direnv 之类的工具来激活每个目录的此设置
- 全局设置envvar
- 在项目根目录中创建一个名为 .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
推荐阅读
- php - PHP中有什么方法可以在会话中存储$variable的$variable
- php - Doctrine Query Builder:如何构建包含“ON DUPLICATE KEY UPDATE”的查询
- android - 使用 Kotlin 协程将 Java 线程处理消息转换为队列
- r - 如何在 R 中 dbSendQuery() 的更新查询中将变量名称分配给“SET”参数
- bash - sed 模式部分作为其他 bash 函数的输入
- python - Vscode 无法使用“转到定义”功能,无法在 PROBLEMS 中打开文件
- c# - 右键单击单词建议(Hunspell)
- bash - 将 zip 文件批量重命名为原始名称,但删除部分名称
- java - 没有错误:但 XSLT 转换没有通过 Javax.xml.transform 发生
- css - 为什么无法在占位符上堆叠 CSS 跨浏览器规则?