Anaconda:永久包含外部包(如在 PYTHONPATH 中)

Anaconda: Permanently include external packages (like in PYTHONPATH)

我知道如何使用 conda install 在 Anaconda 中安装软件包以及如何安装 PyPi which is described in the manual.

上的软件包

但是我如何才能将 packages/folders 永久包含在 Anaconda 环境的 PYTHONPATH 中,以便可以导入我当前正在处理的代码并在重新启动后仍然可用?

我目前的做法是使用sys:

import sys
sys.path.append(r'/path/to/my/package')

不太方便。

有什么提示吗?

提前致谢!

我在 Anaconda forum 中找到了我的问题的两个答案:

1.) 将模块放入站点包中,即始终位于 sys.path 上的目录 $HOME/path/to/anaconda/lib/pythonX.X/site-packages。这也应该通过创建一个符号 link.

来工作

2.) 添加一个.pth 文件到目录$HOME/path/to/anaconda/lib/pythonX.X/site-packages。这可以命名为任何名称(它必须以 .pth 结尾)。 .pth 文件只是一个以换行符分隔的目录完整路径名列表,这些目录将在 Python 启动时添加到您的路径中。

或者,如果您只想link到特定的conda环境,那么将.pth文件添加到~/anaconda3/envs/{NAME_OF_ENVIRONMENT}/lib/pythonX.X/site-packages/

两者都很简单,我选择了第二个选项,因为它更灵活。

*** 更新:

3.) 使用conda develop i。 e. conda-develop /path/to/module/ 以添加创建 .pth 文件的模块,如选项 2 中所述。)。

4.) 创建一个 setup.py in the folder of your package and install it using pip install -e /path/to/package which is the cleanest option from my point of view because you can also see all installations using pip list. Note that the option -e allows to edit the package code. See here 以获取更多信息。

谢谢!

只是添加到上面的 Cord Kaldemeyer 的回答中,用于第二个选项。如果您只想 link 到特定的 conda 环境,请将 .pth 文件添加到 ~/anaconda3/envs/{NAME_OF_ENVIRONMENT}/lib/pythonX.X/site-packages/

我可以使用以下方法包含本地模块:

conda-develop /path/to/module/

希望对您有所帮助。

我认为最适合 conda 的方法是根据官方文档 here 在我的环境中创建 env_vars.sh 文件。

对于macOS和Linux用户,步骤如下:

  1. 转到您的环境文件夹(例如 /miniconda1/env/env_name)。 $CONDA_PREFIX 是您的环境路径的环境变量。

    cd $CONDA_PREFIX
    
  2. 创建 activate.ddeactivate.d 目录。

    mkdir -p ./etc/conda/activate.d
    mkdir -p ./etc/conda/deactivate.d
    
  3. 在每个目录中,创建一个 env_vars.sh 文件。当您 conda activate 您的环境时,activate.d 目录中的那个将设置(或 export)您的环境变量。当您 conda deactivate 您的环境时,deactivate.d 目录中的文件将用于取消设置环境变量。

    touch ./etc/conda/activate.d/env_vars.sh
    touch ./etc/conda/deactivate.d/env_vars.sh
    
  4. 首先编辑 $CONDA_PREFIX/etc/conda/activate.d/env_vars.shexport 所需的环境变量。

    #!/bin/sh
    
    export VAR_A='some-thing-here'
    export VAR_B=/path/to/my/file/
    
  5. 之后,打开编辑$CONDA_PREFIX/etc/conda/deactivate/env_vars.sh,以便unset环境变量当你conda deactivate像这样:

    #!/bin/sh
    
    unset VAR_A
    unset VAR_B
    

同样,我的描述来源直接来自 conda 文档 here