0

对于背景,我主要在终端中工作并使用 vim 编辑代码。对于长期的 python 项目,我使用诗歌管理 venvs 并在源代码控制中锁定文件。

我喜欢在我工作的几乎每个 venv 中安装一些模块,例如 ipython/ptpython、(pytest-)icdiff 和其他“生活质量”扩展,我不需要强加给不使用的项目合作者我的工作流程。我可以使用我的发行版的包管理器(或 pipx)在全局范围内安装 ptpython,但是当我运行它时,它不会在本地 venv 中运行,并且无法访问本地依赖项。这变得令人讨厌,因为随着锁定文件的更改,我会定期重新创建 venvs。现在我有一个安装这些东西的 shell 脚本,但这感觉就像一个 hack。

一个理想的解决方案可能是创建类似 venv 模板的方法,类似于 git templatedir 选项。Python有这样的东西吗?

4

3 回答 3

0

解决方案

此问题并非特定于 Python venv,它也存在于 rvm 和 nvm 中。只需在全局 Python 命名空间下安装包并将其添加到您的PYTHONPATH,这样如果包未安装在本地存储库中,Python 将回退到您的全局 Python 命名空间,而无需修改存储库锁定文件。

于 2020-09-14T18:38:06.943 回答
0

virtualenv 模块可以选择在 venv 中包含系统站点包:

python3 -m venv --system-site-packages .venv

有一个功能请求支持将此选项添加到诗歌中。

在这个线程中有一个很好的站点包概述。

于 2020-09-14T18:22:18.460 回答
0

这可能不能直接回答,但我认为 anaconda 环境是要走的路。您可以创建不同的“基础”环境,然后克隆它们。然后,您可以根据需要在新的克隆环境中使用 pip 添加更多包,从而不会更改基础,但在新环境中具有可定制性。

试试这个答案: https ://stackoverflow.com/a/40702703/7654532

于 2020-09-14T18:24:15.330 回答