【问题标题】:Sharing virtualenv across two projects跨两个项目共享 virtualenv
【发布时间】:2017-10-03 17:22:38
【问题描述】:

我有我的python 全局安装,我们称之为全局环境。然后我有一个我贡献的项目(让我们称之为 project_X),它使用旧版本的数字模块。我使用 virtualenv 是为了在 global env 上安装 pandas 0.20,但在项目 X env 上安装 pandas 0.18。

现在我想创建一个我自己的项目(我们称之为 myproj),它将项目 X 作为一个模块导入。为了简单起见,我将在 myproj 中使用与项目 X 相同的依赖项。即便如此,我到底该怎么做:

A) 告诉 myproj 和项目 X 应该使用相同的 virtualenv?我的意思是,关于 virtualenv,我唯一知道的就是做 venv/bin/activate 和 deactivate。在项目 X 的​​文件夹中,我有一个 venv 文件夹,所以在 myproj 中我会有一个 venv 文件夹......我应该如何告诉 virtualenv 这些是相同的?

B) 告诉 myproj,它位于文件夹 ~/myproj 中,当我导入项目 X 时,我的意思是 ~/project X 中的文件夹?

【问题讨论】:

  • 将环境保留在项目文件夹之外并以这种方式共享。
  • 您了解激活环境时会发生什么吗?我认为这是造成混乱的很大一部分。
  • @MadPhysicist 不,我没有。
  • 您将环境变量和配置文件设置为指向特定版本的 Python 和一组特定的已安装包。如果您只是激活您的 projectX 环境,那么您应该可以在该 shell 中为具有相同依赖项的任何其他项目进行操作。
  • @MadPhysicist 知道了。谢谢你。这实际上还不够,因为 projectX 不在站点包中或sys.path 的任何地方。但是,您的回答使我朝着正确的方向前进。我刚刚将 projectX 添加到 sys.path(这是对 projectX 的 venv 的补充)。

标签: python virtualenv


【解决方案1】:

我使用pipenv 解决了这个问题。

  • project_X 运行pipenv install 创建一个virtualenv
  • 将生成的virtualenv 符号链接到myproj 中的文件夹.venv。例如ln -s {your_home_folder}/.local/share/virtualenvs/your_projectX_virtualenv .venv

【讨论】:

    猜你喜欢
    • 2014-11-03
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2015-12-12
    • 1970-01-01
    • 2012-11-20
    相关资源
    最近更新 更多