使用本地 pip 安装导出 conda 环境

Exporting a conda environment with local pip installs

我已经使用

导出了当前活动的环境
conda env export > environment.yml

这非常方便,因为它可以跟踪 conda 和 pip 安装的包。但是,我有一些包(例如 shapely 和底图)是通过 pip 从 Christoph Gohlke 为 Windows 编译的包中的 .whl 文件在本地安装的。当我尝试通过

重新创建我的环境时
conda env create -f environment.yml

pip returns 出现错误,因为它无法在其索引中找到这些包(很明显)。有没有办法在 conda 导出步骤中告诉 pip 在哪里寻找这些本地包?可以假定 .whl 文件与 environment.yml 文件位于同一目录中。

根据我所知,无法真正让它自动为 .whl 文件创建条目。

实现此功能的最简单方法是手动更改 environment.yml 文件并在 - pip: 下的列表中添加 .whl 文件。我尝试通过下载 nose.whl 包并将其放在与我的 env.yml 文件相同的目录中,结构如下所示:

name: python3_test
dependencies:
- openssl=1.0.2h=1
- pip=8.1.2=py35_0
- python=3.5.1=5
- readline=6.2=2
- setuptools=23.0.0=py35_0
- sqlite=3.13.0=0
- tk=8.5.18=0
- wheel=0.29.0=py35_0
- xz=5.2.2=0
- zlib=1.2.8=3
- pip:
   - nose-1.3.7-py3-none-any.whl

如果它位于不同的目录中,只需提供目录即可。当然,发出 conda create env.

时路径应该有效

当 运行 conda env create -n <name> -f <file.yml>pretty straightforward install 时发出的 pip 命令因此从命令行使用 pip 安装的语义应该是相似的。哎呀,你甚至可以在 requirements.yml 中为 .whl 文件添加 url,安装仍然会顺利进行。同样,保持其余部分不变并使用 url 下载 nose:

- pip:
   - https://pypi.python.org/packages/15/d8/dd071918c040f50fa1cf80da16423af51ff8ce4a0f2399b7bf8de45ac3d9/nose-1.3.7-py3-none-any.whl#md5=3135984cc9cfcbe5d9c46e166d6743b0

使用任何 url 应该不会造成任何问题。

这是一个 environment.yml 的具体示例,它使用 URL 到 link 从 Christoph Gohlke 为 Windows 编译的包中传送文件:

# run: conda env create --file environment.yml
name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  - http://www.lfd.uci.edu/~gohlke/pythonlibs/bofhrmxk/opencv_python-3.1.0-cp35-none-win_amd64.whl

参考: