通过常见包上的YML文件阻塞创建Anaconda环境-os,pip,pandas

时间:2019-10-24 21:28:15

标签: pip anaconda package install environment

为什么从YML文件创建环境时,anaconda为什么会窒息普通软件包?带有这些软件包的Anaconda COMES已预先安装在root用户中(或者,我想这样吗?)

YML文件:

---
name: rasterenv
channels:
        - conda-forge

dependencies:
        - gdal>=2.2.3
        - rasterio
        - cython
        - jupyter
        - matplotlib
        - numpy
        - pyproj
        - shapely
        - rasterio
        - pandas
        - geopandas
        - os
        - matplotlib
        - seaborn
        - fiona
        - OSMnx
        - pip:
            - pygeotools
            - pygeoprocessing

尝试使用conda env create -f path/to/file

构建文件

如果我使用诸如rasterio之类的不常见软件包创建环境,则它似乎可以工作。但是,我想要所有人的环境!这里有什么?

错误是:

ResolvePackageNotFound:
  - os

如果我从列表中删除os,则错误将变为:

ResolvePackageNotFound:
  - matplotlib

1 个答案:

答案 0 :(得分:1)

正如@sinoroc在评论中指出的那样,os是Python标准库的一部分,不应作为依赖项列出。 (当您将其定义为依赖项时,Python会在所有可用的存储库(在这种情况下为PyPI或anaconda.org)上寻找名为os的软件包,但找不到它。)

通过查看以下文档,您可以查看哪些软件包是标准库的一部分:https://docs.python.org/3/library/ (SO上也存在一些问题,如何确定特定软件包是否是std库的一部分,例如How to check if a module/library/package is part of the python standard library?。)在创建新环境时,只有来自std lib的软件包才可以默认情况下可用。其他任何东西都需要安装。

此外,您的yaml文件中有两个包被列出了两次(rasteriomatplotlib),这让我觉得您是手动创建该文件的。您可以通过激活环境并运行conda env export > environment.yml来生成conda环境文件,该文件将创建一个具有所有必需依赖项的名为environment.yml的文件。