在我的Windows 10计算机上,我使用以下命令创建了一个虚拟环境:
>conda env export > environment.yml
我尝试使用Windows系统上的yml文件重新创建虚拟环境,但它运行正常。然后我将environment.yml转移到我的Linux机器(Ubuntu 16.04.1),使用相同版本的conda和python,并在终端中运行以下命令:
$ conda env create -f environment.yml
我收到以下错误:
使用Anaconda Cloud api网站https://api.anaconda.org
获取包元数据.......
解决包装规格:。
错误:当前linux-64通道中缺少软件包:
- jpeg 8d vc14_0
- libpng 1.6.22 vc14_0
- libtiff 4.0.6 vc14_2
- mkl 11.3.3 1
- numpy 1.11.1 py35_1
- openssl 1.0.2h vc14_0
- pyqt 4.11.4 py35_7
- qt 4.8.7 vc14_9
- tk 8.5.18 vc14_0
- vs2015_runtime 14.0.25123 0
- zlib 1.2.8 vc14_3
大多数这些软件包都在conda的linux repo中提供,但具有不同的风格。例如,如果我从包含yml文件中的jpeg包的行中删除vc14_0,那就可以了。 vs2015_runtime包在linux中根本不可用。运行时不会返回任何内容:
conda search vs2015_runtime".
如何在跨平台工作时以可移植的方式导出我的虚拟环境,以便所有软件包也可以安装在Linux中?
以下是我environment.yml的内容。
答案 0 :(得分:2)
看起来您正在获取使用Microsoft Visual C / C ++编译器(名称的vc
部分)编译的包。
这些软件包不会像您尝试的那样从Linux兼容ABI。只需定位非特定于Windows的软件包。
答案 1 :(得分:0)
导出环境时,请使用 --from-history 选项。
conda env export --from-history > environment.yml
它只会导出您明确安装的库,而不是依赖项:
通常某些依赖项是特定于平台的,例如上面的 Visual Studio 依赖项。此外,默认的 conda env 导出将平台特定信息放入库中。
它可以避免很多麻烦并使您的导出文件多平台。
额外提示:始终安装引用其版本号的库(例如:conda install pandas=1.2.1)。如果没有版本,上面的命令将导出没有版本的依赖项,破坏您的环境。