如何为conda创建指定新的环境位置


107

软件包的默认位置是我的主目录中的.conda文件夹。但是,在我使用的服务器上,我可以使用多少空间有非常严格的限制,这基本上避免了我将任何内容放置在主目录下的情况。如何为要创建的虚拟环境指定位置?谢谢!服务器正在运行Ubuntu。


9
答案有问题吗?或者为什么您不接受它?如果您不喜欢某些内容,可以随时发表评论。
Pinocchio

3
@linX始终确保对您喜欢的答案进行投票,并接受最佳或能解决您问题的答案。这给作者以次要的奖励,并激励他们继续提供深思熟虑和有用的答案。
Mike Williamson

Answers:


120

使用--prefix-p选项指定将环境文件写入的位置。例如:

conda create --prefix /tmp/test-env python=2.7

将创建/tmp/test-env驻留在其中的命名环境,/tmp/而不是默认环境.conda


6
但是一旦您将环境的位置移动了,conda怎么知道如何找到新环境的位置?
Pinocchio

4
〜/ .conda / envs内每个环境都有一个目录。请遵循其他人的指导,并使用--prefix在所需的任何位置安装。然后创建一个到另一个的符号链接:ln -s / shared / eng / conds / envs / test-env〜/ .conda / envs / test-env
Robert Lugg

1
为什么不起作用conda create --name hbf_env --prefix /om2/user/username python=3.6 ?说-bash: /home/username/.conda/envs/hbf_env/bin/conda: No such file or directory
查理·帕克

7
查理,我不确定为什么会收到有关缺少文件/目录的错误消息,但是无论如何,它--name都不能与一起使用--prefix。假设conda安装正确,则对应的命令为conda create --prefix /om2/user/username/hbf_env python=3.6。这将创建一个hbf_env在位置命名的环境/om2/user/username/
Thomas Fauskanger,2017年

9
@ThomasFauskanger似乎前缀命令没有为环境创建名称,至少对我来说没有。.在conda create --prefix hbf_env本地目录中后,conda info --envs名称显示为空白,但显示完整路径...激活环境需要我键入完整路径(如果我只输入名称,
conda

53

就像保罗说的那样

conda create --prefix=/users/.../yourEnvName python=x.x

如果您位于要在其中创建虚拟环境的文件夹中,则只需省略路径并使用

conda create --prefix=yourEnvName python=x.x

conda仅跟踪anaconda文件夹内的envs文件夹中包含的环境。下次您需要激活新的环境时,移至创建它的文件夹,然后使用

source activate yourEnvName

2
请注意,如果您忘记了环境名称,则可以使用包含环境的目录的FULL路径
tjb

2
您可以告诉conda使用.condarc配置文件在其他位置查找环境。 conda.io/docs/user-guide/configuration/...
苛刻的

这将创建一个没有名称的环境,只有目录。有什么方法可以在语句中创建名称?康达不会让我同时指定两者。
Kyouma

14

当使用该--prefix选项时,每次创建环境时都必须显式使用它。如果只想将环境默认存储在其他位置,则可以在.condarc文件中进行配置。

请参阅:https : //conda.io/docs/user-guide/configuration/use-condarc.html#specify-environment-directories-envs-dirs


4
如果尚未更改此变量,则可以通过运行以下命令来配置它:conda config --append envs_dirs /path/to/envs
Arthur Tacca,

4
env_prompt: ({name})如果在提示符下获得完整路径,还请添加到〜/ .condarc。
plonker13

12

如果要使用--prefixor-p参数,但又希望避免使用环境的完整路径来激活它,则需要在编辑.condarc配置文件之前创建环境。

.condarc文件位于主目录中;C:\Users\<user>在Windows上。编辑envs_dirs键下的值以包括您环境的自定义路径。假设自定义路径为D:\envs,则文件最终应该看起来像这样:

ssl_verify: true
channels:
  - defaults
envs_dirs:
  - C:\Users\<user>\Anaconda3\envs
  - D:\envs

然后,当您在该路径上创建新环境时,它的名称将在您运行时随路径一起出现conda env list,并且您应该能够仅使用名称而不是完整路径来激活它。

命令行截图

总而言之,如果您修改.condarc为包括D:\envs,然后运行conda env create -p D:\envs\myenv python=x.x,则activate myenv(或source activate myenv在Linux上)应该可以使用。

希望有帮助!

PS我通过反复试验偶然发现了这一点。我认为会发生什么情况,当您编辑envs_dirs密钥,conda更新~\.conda\environments.txt以包括在下方指定的所有目录中找到的环境时envs_dirs,可以在不使用绝对路径的情况下访问它们。


8

您可以这样创建它

conda create --prefix C:/tensorflow2 python=3.7

而且您不必移动到该文件夹​​即可激活它。

# To activate this environment, use:
# > activate C:\tensorflow2

如您所见,我就是这样。

D:\Development_Avector\PycharmProjects\TensorFlow>activate C:\tensorflow2

(C:\tensorflow2) D:\Development_Avector\PycharmProjects\TensorFlow>

(C:\tensorflow2) D:\Development_Avector\PycharmProjects\TensorFlow>conda --version
conda 4.5.13

1
OP表示他们正在使用Ubuntu,但+1也在Windows机器上提供了解决方案。:)
Mike Williamson

2

我遇到了类似的情况。我确实可以访问更大的数据驱动器。根据您的情况以及对服务器的访问权限,可以考虑

ln -s /datavol/path/to/your/.conda /home/user/.conda

然后后续的conda命令会将数据放入datavol中的符号链接目录中


我认为这是正确的答案-最初的问题是关于包裹的位置,并且有些含糊,但是我最近遇到了这个问题,并做了一些调查。有下的两个重要目录$HOME/.condaenvspkgs。使用上述--prefix方案可以在其他地方构建环境,但是所有软件包文件下载仍位于$HOME/.conda/pkgs。此处提供的symlink解决方案可修复环境下载位置。
Andrew Reid
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.