【问题标题】:Conda (Python) Virtual Environment is not Portable from Windows to LinuxConda (Python) 虚拟环境不能从 Windows 移植到 Linux
【发布时间】:2016-12-30 13:02:27
【问题描述】:

在我的 Windows 10 机器上,我使用以下命令创建了一个虚拟环境:

>conda env export > environment.yml 

我尝试在 Windows 系统上使用 yml 文件重新创建虚拟环境,效果很好。然后我使用相同版本的 conda 和 python 将 environment.yml 转移到我的 Linux 机器(Ubuntu 16.04.1)并在终端中运行以下命令:

$ 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
- 传统知识 8.5.18 vc14_0
- vs2015_runtime 14.0.25123 0
- zlib 1.2.8 vc14_3

这些软件包中的大多数都可以在 conda 的 linux 存储库中找到,但有不同的风格。例如,如果我从 yml 文件中包含 jpeg 包的行中删除 vc14_0,那将正常工作。软件包 vs2015_runtime 在 linux 中根本不可用。运行时不会返回任何内容:

conda search vs2015_runtime". 

如何在跨平台工作时以可移植的方式导出我的虚拟环境,以便所有软件包也可以安装在 Linux 中?

这是我environment.yml的内容。

【问题讨论】:

  • 有一个ticket关于这个问题,看来conda环境在未来的版本中会变得更加便携。让我们希望它确实如此,因为它很烦人
  • 这个问题已经解决了吗,我将尝试在这两个操作系统上工作,并希望在每个操作系统中都有一个可以工作的虚拟环境?
  • 我也想知道。解决了吗?我正在尝试将应用程序部署到 ubuntu 服务器中,但环境让我很头疼。

标签: python linux virtualenv anaconda conda


【解决方案1】:

导出环境时,请使用选项 --from-history。

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

它只会导出您明确安装的库,而不是依赖项:

通常某些依赖项是特定于平台的,例如上面的 Visual Studio 依赖项。此外,默认的 conda env 导出将平台特定信息放入库中。

这将避免很多麻烦,并使您的导出文件多平台。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 当我在 Windows 中运行“conda search libpng”时,我得到了一堆条目,包括以下两个。 .......... libpng -- 1.6.17 -- 0 个默认值 .................... ..................................................... ......................................... libpng -- * 1.6。 22 -- vc14_0 默认值 [vc14] ................................... ..‌​........................‌​..................................​.. .......... 我应该安装第一个吗?如何告诉 conda 将我所有的默认包更改为非“vc”特定的包?我运行“conda update libpng”。
    • 是的,您应该安装第一个。不知道如何自动切换所有的包,我对 conda 没有那么有经验。您可能可以卸载 'vc' 包,安装相应的 'non-vc' 包,然后创建 .yml 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2011-11-19
    • 2018-06-18
    • 1970-01-01
    • 2018-12-29
    相关资源
    最近更新 更多