如何制作可在其他计算机上使用的 anaconda 环境文件?
我使用 conda env export > environment.yml
将我的 anaconda python 环境导出到 YML。导出的 environment.yml
包含此行 prefix: /home/superdev/miniconda3/envs/juicyenv
,它映射到我的 anaconda 的位置,这在其他电脑上会有所不同。
conda env create -f environment.yml
顺便说一句,根据我的经验,这不适用于跨平台,因为如果您在 Windows 上,conda env 将列出许多依赖项,例如 `vs2015_runtime`。但当然这在 linux 上是不可用的。
environment.yml
文件,因此您可以将其省略 - 请参阅 stackoverflow.com/questions/39280638/…
我在 conda
规范中找不到任何允许您在没有 prefix: ...
行的情况下导出环境文件的内容。但是,就像评论中的 Alex pointed out 一样,conda 在从文件创建环境时似乎并不关心前缀行。
考虑到这一点,如果您希望其他用户不知道您的默认安装路径,您可以在写入 environment.yml
之前删除带有 grep
的前缀行。
conda env export | grep -v "^prefix: " > environment.yml
无论哪种方式,其他用户都会运行:
conda env create -f environment.yml
并且该环境将安装在其默认的 conda 环境路径中。
如果您想指定与系统默认安装路径不同的安装路径(与 environment.yml 中的“前缀”无关),只需使用 -p
标志,后跟所需路径。
conda env create -f environment.yml -p /home/user/anaconda3/envs/env_name
请注意,Conda 建议手动创建 environment.yml
,如果您想要跨平台(Windows/Linux/Mac)共享您的环境,这一点尤其重要。在这种情况下,您可以省略 prefix
行。
从要安装到另一台计算机的环境中保存软件包的最简单方法是:
$ conda list -e > req.txt
然后你可以使用安装环境
$ conda create -n <environment-name> --file req.txt
如果您使用 pip
,请使用以下命令:参考 https://pip.pypa.io/en/stable/reference/pip_freeze/
$ env1/bin/pip freeze > requirements.txt
$ env2/bin/pip install -r requirements.txt
Linux conda env 导出 --no-builds | grep -v "前缀" > environment.yml
Windows conda env 导出 --no-builds | findstr -v "前缀" > environment.yml
基本原理:默认情况下,conda env export
包含构建信息:
$ conda env export
...
dependencies:
- backcall=0.1.0=py37_0
- blas=1.0=mkl
- boto=2.49.0=py_0
...
您可以在没有构建信息的情况下导出您的环境:
$ conda env export --no-builds
...
dependencies:
- backcall=0.1.0
- blas=1.0
- boto=2.49.0
...
它将环境与 Python 版本和操作系统解开。
首先激活您的 Conda 环境(下面,myenv 是环境的假定名称)。
conda activate myenv
然后你只需要运行这个命令
conda env export > environment.yml
请注意,您可以将 environment.yml 替换为您选择的任何其他文件名。
首先激活您的 conda 环境(您要导出/备份的环境)
conda activate myEnv
将所有包导出到文件 (myEnvBkp.txt)
conda list --explicit > myEnvBkp.txt
恢复/导入环境:
conda create --name myEnvRestored --file myEnvBkp.txt
我发现仅以字符串格式导出包比导出整个 conda
环境更便携。正如之前的答案已经建议的那样:
$ conda list -e > requirements.txt
但是,此 requirements.txt
包含不能在操作系统之间移植的版本号,例如在 Mac
和 Ubuntu
之间。在 conda env export
中,我们有选项 --no-builds
但没有 conda list -e
,因此我们可以通过发出以下命令来删除内部版本号:
$ sed -i -E "s/^(.*\=.*)(\=.*)/\1/" requirements.txt
并在另一台计算机上重新创建环境:
conda create -n recreated_env --file requirements.txt
sed
命令效果很好。我不得不删除一个补丁版本。所以 major.minor.patch
到 major.minor
并且它起作用了。事实证明,较低的补丁号已被主仓库删除。
对我来说,康达给出的程序有效:
但只有在 anaconda 提示/控制台中执行。
VSCode 终端只生成了一个 yml 文件,其中包含指向我的环境的路径,但没有明确列出依赖项中的包。
--from-history
选项,但不包括 pip
包。所以如果你有一些你应该手动添加它们(可以从完整的导出中复制)。
对于 Windows 用户
打开 CMD Conda 激活 SpidersEnv conda env export > SpidersEnv.yml 然后浏览用户文件夹并搜索 SpidersEnv.yml
这也是backup(导出)您的环境的另一种方式
不定期副业成功案例分享
prefix
在同一台机器上使用时有助于更快地创建新环境,但我没有太多证据证明这种说法。我曾经在没有prefix
的情况下运行,它必须下载一些以前不需要的额外包。然而,这只发生了一次,所以也许在那之后它们被缓存在系统级别(?)所以,不需要共享,但在自己使用时可能是可取的。