如何使用 conda 或 virtualenv 在虚拟环境之间共享包?

haz*_*ard 5 python virtualenv

我有多个 python 项目,每个项目都有自己的虚拟环境。另外我有一个全局 python 环境。我想在虚拟/全局环境之间共享相同的包文件,而不需要多次复制它们(如果可能)。


Environment        Packages
----------------------------------------
GLOBAL:      A    B    C    D    
VENV_1:      A    B    C         E
VENV_2:                C    D         F
Run Code Online (Sandbox Code Playgroud)

所以,在这个例子中:

  • 所有环境将共享相同C.
  • GLOBAL并且VENV_1还将共享A和 的文件B
  • 并将GLOBAL共享.VENV_2D
  • 但由于EF不是全局安装的,因此虚拟环境将单独安装这些软件包。

我尝试使用virtualenv--system-site-packages标志,但这只会使所有全局包在虚拟环境中可访问。因此,当我使用它导出环境时,pip freeze它将包含不必要的包。

如何使用选定的软件包创建虚拟环境,以便在全局安装某个软件包时,不会在本地创建该软件包的新文件副本?这可以使用condavirtualenv或任何其他工具吗?

我正在使用 Windows 10 和 python 3.6。

Ste*_*veJ 0

使用 PyCharm,您可以关联项目,并且您可能可以操作 venv/Source/activate.bat 文件中的 PYTHONPATH 变量,但我认为您找错了树。

我相信您设置一个私有 PyPi 服务器(示例)会更好。这样做时,您可以将 pip 安装到您的新项目中 - 具有版本控制和其他优点的额外优势。否则,您实际上只是抵消了虚拟环境最初为您带来的许多封装优势。