2016-08-23 45 views
6

在我的Windows 10的机器,我使用下面的命令创建的虚拟环境:康达(Python)的虚拟环境是不可移植从Windows到Linux

>conda env export > environment.yml 

我试图重新创建使用YML虚拟环境文件在Windows系统上,它工作得很好。然后我转移environment.yml到我的Linux机器(Ubuntu的16.04.1)使用相同版本的畅达和python的跑在终端如下:

$ conda env create -f environment.yml 

我得到以下错误:

Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .......
Solving package specifications: .
Error: Packages missing in current linux-64 channels:
- 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的内容。

+1

关于这个问题,有一个[ticket](https://github.com/conda/conda/issues/4545),似乎Conda环境在将来的版本中将变得更加便携。我们希望这样做,因为它很烦人 – Overdrivr

+0

这个问题已经解决了,我即将尝试在两个操作系统上工作,并希望在每个操作系统中都使用虚拟环境? – neuronet

回答

2

看起来您正在获取使用Microsoft Visual C/C++编译器(名称的vc部分)编译的软件包。 这些软件包不会像Linux那样与ABI兼容。只需定位不特定于Windows的软件包即可。

+0

当我在Windows中运行“conda search libpng”时,我收到了一堆条目,包括以下两个条目。 ............ ** libpng - 1.6.17 - 0默认值** ........................ .................................................. ...................................... ** libpng - * 1.6.22 - vc14_0默认值[vc14] ** ........................................ .. .................. .................... ........ .... 我应该安装第一个吗?我如何告诉conda将所有我的默认软件包更改为不是“vc”特定的软件包?我运行“conda update libpng”。 – hANI

+0

是的,你应该安装第一个。不知道如何自动切换所有的软件包,我对conda没有经验。您可以卸载'vc'软件包,安装相应的'非vc'软件包,然后创建.yml文件。 – Av4t4r