从Windows命令终端激活conda环境时,系统路径发生了变化。也就是说,如果我打开一个新的终端并执行:
echo %PATH%
conda activate env_name
echo %PATH%
得到两个不同的结果。具体来说,我在conda之外的路径更加"最新",包括我在安装Anaconda后安装的外部程序的位置。例如,我安装了ImageMagick,它包含在conda之外的Windows路径中,但不在我的conda环境中。
换句话说,conda看起来像您所期望的那样,保留了特定的环境,包括Windows shell的path环境变量。这一切都很好,但是现在我想(永久地)更改conda环境中的这个变量(特别是,我希望我的路径包含ImageMagick的位置)。到目前为止,我还没有找到一个很好的解决方案。这里描述的方法确实有效,但看起来很笨拙,因为它使用脚本在激活conda环境时自动修改路径变量。显然,这个变量存储在某个地方,所以我想永久地修改它。什么好主意吗?
您的问题的一个解决方案是在conda环境路径下的bin/
文件夹中创建Imagemagik文件的符号链接(~一个快捷方式)
要知道路径,您将执行conda info --envs
,您将获得环境和相应的路径(此路径也是当环境被激活时您在echo $PATH
调用中看到的第一个路径)
在windows中,您可以以管理员身份打开cmd
提示符和类型mklink conda/path/of/environment/bin/ original/location/of/Imagemagik
之后,我相信您应该能够从命令行调用Imagemagik,就好像它在您的路径中一样。
在Ubuntu中,你可以使用ln
来创建符号链接
我只是想添加一个我发现的解决方案(感谢这个答案),并最终(有时)使用自己,这是在相关代码中包含以下内容:
import os
os.environ["PATH"] += os.pathsep + magick_path
这个解决方案的优点是,您可以将它放在需要访问的任何脚本或函数中(在我的例子中是ImageMagick),或者更一般地说,在路径中当前没有找到的一些可执行文件。这取决于你想要什么。Prashant的解决方案更持久,因为它有效地将可执行文件添加到整个conda环境中。上面的解决方案更加灵活,因为您可以根据需要添加它,但每次需要时都必须重做。