首页 > 解决方案 > 使用在 windows for linux 上创建的 conda env

问题描述

我正在将许多环境从 PC 迁移到 linux。

在我运行的 Windows 上:

C:\foo> conda env export > environment.yml

而且,后来,在 linux 上,我运行:

$ conda env create -f environment.yml

但我收到如下错误:

ResolvePackageNotFound: 
  - icc_rt=2017.0.4
  - vc=14
  - vs2015_runtime=14.0.25123
  - wincertstore=0.2
  - qt==5.9.5=vc14he4a7d60_0

必须(我假设)是一个已解决的问题。

在这个话题上比我更聪明的人请告诉我他们将如何解决这个问题?

谢谢!

标签: pythoncross-platformconda

解决方案


导出环境时,使用选项 --from-history。它只会导出您明确安装的库,而不是依赖项:

conda env export --from-history > environment.yml

不会导出任何平台特定信息。它将避免很多头痛。

通常,某些依赖项是特定于平台的。此外,默认的 conda env 导出将平台特定信息放入库中。这将使在 Windows 中创建的 environment.yml 文件在尝试在 Linux 中重新创建时失败,反之亦然。

Conda 和 Pip 并不能很好地在另一台机器上完美地重新创建环境,因为它们不会记录依赖关系的所有依赖关系。通常你不会有麻烦,但如果你有,很难发现依赖项的依赖项是稍微不同的版本。

额外提示:始终安装引用其版本号的库(例如:)conda install pandas=1.2.1。如果没有版本,上面的命令将导出没有版本的依赖项,破坏环境的可重现性。

但是如果你从一个 environment.yml 文件创建你的环境呢?现在--from-history将导出平台特定的依赖项。然后grep是你的朋友。您将需要对所有导入语句进行 grep,查看它们中的哪些是在您的 environment.yml 文件中定义的,并且只需使用相同版本而不需要特定于平台的信息来使用它们。最好使用 --from-history 或手动编辑文件开始正确执行此操作。


推荐阅读