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

Posted

技术标签:

【中文标题】如何为 conda create 指定新的环境位置【英文标题】:how to specify new environment location for conda create 【发布时间】:2016-10-21 23:16:42 【问题描述】:

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

【问题讨论】:

答案有问题还是为什么不接受?如果有你不喜欢的东西,你可以随时离开 cmets。 @linX 始终确保为您喜欢的答案投票,并接受最佳答案或解决您问题的答案。这给了作者一个小奖励,并激励他们继续提供深思熟虑和有用的答案。 【参考方案1】:

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

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

将创建名为/tmp/test-env 的环境,该环境位于/tmp/ 中,而不是默认的.conda

【讨论】:

但是一旦你移动了环境的位置,conda 怎么知道如何找到新环境的位置? 在 ~/.conda/envs 中每个环境都有一个目录。遵循他人的指导并使用 --prefix 安装在您想要的任何位置。然后创建一个从一个到另一个的符号链接: ln -s /shared/eng/conds/envs/test-env ~/.conda/envs/test-env 为什么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? Charlie,我不知道您为什么会收到有关丢失文件/目录的错误消息,但无论如何,--name 不能与 --prefix 一起使用。假设 conda 安装正确,对应的命令是conda create --prefix /om2/user/username/hbf_env python=3.6。这将在位置 /om2/user/username/ 中创建一个名为 hbf_env 的环境 @ThomasFauskanger 看起来前缀命令没有为环境创建名称,至少对我来说是这样。在本地目录中的conda create --prefix hbf_env 之后,conda info --envs 显示名称为空白但确实显示完整路径...激活环境需要我输入完整路径(如果我只输入名称,conda 找不到环境)【参考方案2】:

就像保罗说的,使用

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

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

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

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

激活它
source activate yourEnvName

【讨论】:

请注意,如果您忘记了环境名称,您可以使用包含您的环境的目录的完整路径 您可以使用.condarc 配置文件告诉 conda 在其他位置查找环境。 conda.io/docs/user-guide/configuration/… 这将创建一个没有名称的环境,只有目录。有没有办法在语句中创建名称? Conda 不允许我同时指定两者。【参考方案3】:

如果您想使用--prefix-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 时的路径一起出现,您应该能够仅使用名称而不是完整路径来激活它。

Command line screenshot

总之,如果您编辑.condarc 以包含D:\envs,然后运行conda env create -p D:\envs\myenv python=x.x,那么activate myenv(或Linux 上的source activate myenv)应该可以工作。

希望有帮助!

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

【讨论】:

【参考方案4】:

虽然使用--prefix 选项有效,但您必须在每次创建环境时显式使用它。如果您只是希望您的环境默认存储在其他位置,您可以在 .condarc 文件中进行配置。

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

【讨论】:

如果你还没有改变这个变量,你可以通过运行这个命令来配置它:conda config --append envs_dirs /path/to/envs 如果您在提示中获得完整路径,还可以将 env_prompt: (name) 添加到 ~/.condarc。 这可能是一个非常特殊的情况,但您需要确保您对envs_dirs 中指定的文件夹具有写入权限,以便conda create 将其用作默认值。实现是让conda create 使用第一个列出的可写目录(anaconda3/lib/site-packages/conda/base/context.py_first_writable_envs_dir 函数)。【参考方案5】:

你可以这样创建

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

【讨论】:

虽然 OP 说他们使用的是 Ubuntu,但 +1 也是为了在 Windows 机器上提供解决方案。 :)【参考方案6】:

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

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

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

【讨论】:

在我看来,这是一个非常正确的答案——最初的问题是关于包裹的位置,并且有一些歧义,但我最近遇到了这个问题,并做了一些调查.在$HOME/.condaenvspkgs 下有两个重要的目录。使用上面提到的--prefix 方案在其他地方构建环境,但是所有的包文件下载仍然到$HOME/.conda/pkgs。此处提供的符号链接解决方案修复了环境下载位置。 这是一个完美的解决方案!【参考方案7】:

使用-p 选项指定您的环境的路径。

对于 Linux/macOS,环境位置信息存储在 ~/.conda/environments.txt

使用conda info --envs 列出您的所有环境。

【讨论】:

以上是关于如何为 conda create 指定新的环境位置的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Google BigQuery JDBC 驱动程序指定区域位置?

如何为本地安装 npm 包设置自定义位置?

如何为 Spyder 安装 python 包

conda create环境报错解决办法

如何为包含空格的 Jenkins 环境变量指定值

如何为Google App Engine实例指定区域?