2016-05-03 105 views
7

我知道如何使用conda install在Anaconda中安装软件包,以及如何构建在manual中描述的PyPi中的软件包。Anaconda:永久包含外部软件包(例如在PYTHONPATH中)

但是我如何永久性地在Anaconda中包含软件包/文件夹,例如与我目前正在使用的代码?

我目前的做法是使用sys

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

这是不是真的很方便。

任何提示?

提前致谢!

回答

10

我发现了两个答案,我的问题在Anaconda forum

1)将模块插入到站点包,即目录$HOME/path/to/anaconda/lib/pythonX.X/site-packages它总是在sys.path。这也应该通过创建一个符号链接来工作。

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

这两个工作很简单,我去了第二个选项,因为它更灵活。

无论如何,谢谢!

2

首选的解决方案是建立自己的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默认环境中导入您的软件包。这不会影响任何其他环境。

如果你想封装添加到特定的环境中(例如 - “myenv”)水蟒之内,您可以将包链接到的特定环境的SYS路径之一:

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

注意以下几点:

  • 将您的软件包目录链接到一个sys路径,而不是实际上将软件包目录移动到一个sys路径,这样可以让您的软件包保存在您选择的目录中。
  • -s标志生成一个软链接(很像快捷键)。如果你移动你的软件包目录,链接将无法工作。如果没有-s标志,则运行ln将生成一个硬链接(如镜像副本),不会因移动(或甚至删除..)软件包目录而受到影响。软链接和硬链接的优点和缺点都有争议here

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