【问题标题】:Manually adding a Windows path within a conda environment在 conda 环境中手动添加 Windows 路径
【发布时间】:2021-09-30 14:59:55
【问题描述】:

当我从 Windows 中的命令终端激活 conda 环境时,系统路径会发生变化。也就是说,如果我打开一个新终端并执行以下操作:

echo %PATH%
conda activate env_name
echo %PATH%

我得到两个不同的结果。具体来说,我在 conda 之外的路径更加“最新”,包括我在安装 Anaconda 后安装的 external 程序的位置。例如,我安装了 ImageMagick,它包含在 conda 外部的 Windows 路径中,但不在我的 conda 环境中。

换句话说,看起来 conda 的行为符合您的预期,保留了某个环境,包括 Windows shell 的路径环境变量。没关系,但现在我想(永久)在我的 conda 环境中更改这个变量(特别是,我希望我的路径包含 ImageMagick 的位置)。到目前为止还没有找到一个很好的解决方案。 The method described here 确实有效,但似乎很笨拙,因为它使用脚本在激活 conda 环境时自动修改路径变量。显然这个变量存储在某个地方,所以我想永久修改它。有什么想法吗?

【问题讨论】:

  • 这个问题似乎暗示你在外部安装了 ImageMagick(或者没有使用 conda)——这是我感兴趣的。只是好奇,你为什么不直接从 conda 安装 ImageMagick 到你的环境,所以不会出现这个问题? anaconda.org/conda-forge/imagemagick
  • 嗯 - 我没有意识到这是可能的。谢谢!
  • 实际上,作为对此的更新,我不得不在新的 Windows 系统上再次安装 ImageMagick,所以我想我会尝试 conda 路线,但看起来包不可用在 Windows 下。
  • 啊,对不起。我没有意识到它与 Windows 不兼容。您是否尝试过将 imagemagik 文件的符号链接创建到感兴趣的环境中的大文件夹?

标签: windows shell path anaconda conda


【解决方案1】:

您的问题的一个解决方案是在 conda 环境的路径中的 bin/ 文件夹中创建 Imagemagik 文件的符号链接(〜快捷方式)

要知道路径,你会做conda info --envs,你会得到环境和相应的路径(这个路径也是你在激活环境时在echo $PATH调用中看到的第一个路径)

在windows中,你可以opencmd提示作为管理员并输入 mklink conda/path/of/environment/bin/ original/location/of/Imagemagik

之后,我相信您应该能够从命令行调用 Imagemagik,就好像它在您的路径中一样。

在 Ubuntu 中,您可以使用 ln 来创建符号链接

【讨论】:

  • 行得通!你唯一弄错的是 mklink 语法的顺序:你必须先把你希望链接存在的地方,然后它应该指向的地方。
  • 啊,我明白了。谢谢指正!
【解决方案2】:

我只想添加一个我找到的解决方案(感谢this answer)并最终(有时)使用我自己,即在相关代码中包含以下内容:

import os
os.environ["PATH"] += os.pathsep + magick_path

此解决方案的优点是您可以将其放入任何需要访问的脚本或函数中,在我的例子中是 ImageMagick,或者更普遍地说是一些当前在路径中找不到的可执行文件。所以这取决于你想要什么。 Prashant 的好解决方案更持久,因为它有效地将可执行文件添加到整个 conda 环境中。上面的解决方案更加灵活,您可以根据需要添加它,但每次需要时都必须重做。

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 2019-03-09
    • 2021-10-02
    • 1970-01-01
    相关资源
    最近更新 更多