如何在 conda env 中重用全局站点包

how to reuse global site-packages in conda env

我有一个名为 ABC 的项目,我有一个专门用于它的 conda env ~/anaconda/envs/ABC,我相信它是一个 venv,我想使用来自全球站点包。

对于正常的 Python 安装,可以从 venv 文件夹中删除 no-global-site-package.txt,或者将 venv 设置为使用 global-site-packages,但是我没有在 Anaconda 中找到任何等效的方法来执行此操作。在线文档也没有答案。

如何为 Anaconda 执行此操作?

您可以使用 PYTHONPATH 环境变量。例如

export PYTHONPATH="/Users/me/anaconda/lib/python2.7/site-packages:$PYTHONPATH"

将为每个环境提供对 anaconda 发行版中所有库的访问权限。虽然有点违背了环境的目的。而且,如果您随后还想访问使用自制软件安装的库,则可以添加

export PYTHONPATH=/usr/local/Cellar/another_package/lib/python2.7/site-packages:$PYTHONPATH

您不能在 conda 中明确地执行此操作,原则是 envs 是完全独立的。

conda 的当前默认行为是允许从内部查看 所有 全局用户站点包环境,如前所述 in this question。因此,默认行为将允许您按照自己的意愿进行操作,但无法根据要求仅允许 "some specific" 个全局包。

此行为已导致 one or two 问题。为了避免它,export PYTHONNOUSERSITE=1source activate <your env> 之前。请注意,开发人员计划更改默认行为以在 4.4.0 中设置 PYTHONNOUSERSITE=1(根据链接的第二个问题)。

万一有人现在回到这里,对于 conda 4.7.12,在 conda activate 调用之前输入 export PYTHONNOUSERSITE=True 为我成功地将 conda 环境与 global/user 站点包隔离开来.

另一方面,输入 export PYTHONNOUSERSITE=0 允许将 conda 环境重新引入 global/user 站点包。

注意:这不是之前建议的 export PYTHONNOUSERSITE=1