【问题标题】:Persisting module installation across new python virtual environments在新的 python 虚拟环境中持久安装模块
【发布时间】:2020-09-14 18:14:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: python python-3.x python-venv ptpython


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      有一个feature request 支持将此选项添加到诗歌中。

      this thread 中有一个很好的站点包概述。

      【讨论】:

        【解决方案3】:

        解决方案

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

        【讨论】:

          猜你喜欢
          • 2016-11-11
          • 2018-09-26
          • 2018-07-03
          • 1970-01-01
          • 1970-01-01
          • 2019-06-14
          • 1970-01-01
          • 1970-01-01
          • 2018-12-02
          相关资源
          最近更新 更多