我知道如何使用conda install
在Anaconda中安装软件包,以及如何安装PyPi中描述的manual上的软件包。
但是,如何将包/文件夹永久包含在Anaconda环境的PYTHONPATH
中,以便我可以导入当前正在处理的代码并在重启后仍然可用?
我目前的做法是使用sys
:
import sys
sys.path.append(r'/path/to/my/package')
这不太方便。
任何提示?
提前致谢!
答案 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/
请注意以下事项:
答案 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用户,步骤如下:
转到您的环境文件夹(例如/miniconda1/env/env_name
)。 $CONDA_PREFIX
是您环境路径的environemnt变量。
cd $CONDA_PREFIX
创建activate.d
和deactivate.d
目录。
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
在每个相应的目录中,创建一个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
首先将$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/
此后,打开以编辑$CONDA_PREFIX/etc/conda/deactivate/env_vars.sh
,以便在unset
时conda deactivate
这样的env变量:
#!/bin/sh
unset VAR_A
unset VAR_B
同样,我的描述来源直接来自conda
文档here。
答案 5 :(得分:0)