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

时间:2016-05-03 13:49:46

标签: python anaconda

我知道如何使用conda install在Anaconda中安装软件包,以及如何安装PyPi中描述的manual上的软件包。

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

我目前的做法是使用sys

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

这不太方便。

任何提示?

提前致谢!

6 个答案:

答案 0 :(得分:37)

我在http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-intro/data-access-using-n1ql.html中找到了我的问题的两个答案:

1。)将模块放入site-packages中,即始终在$HOME/path/to/anaconda/lib/pythonX.X/site-packages上的目录sys.path。这也可以通过创建符号链接来实现。

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

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

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

***更新:

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

4.。)在软件包的文件夹中创建一个conda develop并使用pip install -e /path/to/package安装它,这是我认为最干净的选项,因为您还可以使用{{1}查看所有安装}。

非常感谢!

答案 1 :(得分:4)

首选解决方案是构建您自己的conda包(信息here)。

另一种解决方案是在包目录和sys.path中的任何目录之间创建一个链接。这样,当你要求python导入你的包时,anaconda将搜索它的各种sys.path目录,它将读取你的包的链接,就像那个包在sys.path目录之一一样。

使用ln(link_name)命令可以轻松地链接目录。举个例子:

ln -s /path/to/my/package /path/to/anaconda/lib/python2.7/site-packages/

以上链接允许您从任何目录在anaconda的默认环境中导入您的包。这不会影响任何其他环境。

如果要将包添加到anaconda中的特定环境(例如 - “myenv”),可以将包链接到该特定环境的sys路径之一:

ln -s /path/to/my/package /path/to/anaconda/env/myenv/lib/python2.7/site-packges/

请注意以下事项:

  • 将您的包目录链接到sys路径,而不是实际将包目录移动到sys路径,允许您将包保存在您选择的目录中。
  • -s标志会生成一个软链接(很像快捷方式)。如果移动包目录,链接将无法工作。在没有ln标志的情况下运行-s会生成一个硬链接(如镜像副本),该链接不会受到移动(甚至删除..)包目录的影响。软链接和硬链接的优缺点有争议here

  • Windows用户应该使用mklink。有关信息,请查看here

答案 2 :(得分:1)

只需将第二个选项添加到上述考德迈耶的答案中即可。如果只想链接到特定的conda环境,则将.pth文件添加到~/anaconda3/envs/{NAME_OF_ENVIRONMENT}/lib/pythonX.X/site-packages/

答案 3 :(得分:0)

我可以使用以下内容包含本地模块:

conda-develop /path/to/module/

希望对您有帮助。

答案 4 :(得分:0)

我认为这样做是conda最原始的方式,是根据官方文档here在我的环境中创建env_vars.sh文件。 / p>

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

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

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

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

    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.sh修改为export所需的环境变量。

    #!/bin/sh
    
    export VAR_A='some-thing-here'
    export VAR_B=/path/to/my/file/
    
  5. 此后,打开以编辑$CONDA_PREFIX/etc/conda/deactivate/env_vars.sh,以便在unsetconda deactivate这样的env变量:

    #!/bin/sh
    
    unset VAR_A
    unset VAR_B
    

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

答案 5 :(得分:0)

对我来说最简单的方法是运行:

pip install mypackage

在活动的Anaconda环境终端中:

enter image description here