如何为 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/.conda
、envs
和pkgs
下有两个重要的目录。使用上面提到的--prefix
方案在其他地方构建环境,但是所有的包文件下载仍然到$HOME/.conda/pkgs
。此处提供的符号链接解决方案修复了环境和下载位置。
这是一个完美的解决方案!【参考方案7】:
使用-p
选项指定您的环境的路径。
对于 Linux/macOS,环境位置信息存储在 ~/.conda/environments.txt
。
使用conda info --envs
列出您的所有环境。
【讨论】:
以上是关于如何为 conda create 指定新的环境位置的主要内容,如果未能解决你的问题,请参考以下文章