从常见包上的 YML 文件阻塞创建 Anaconda 环境 - os、pip、pandas

Creating Anaconda Environment from YML File Choking on Common Packages - os, pip, pandas

为什么 anaconda 在从 YML 文件创建环境时会阻塞普通包? Anaconda 在 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

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

您可以通过查看此处的文档来了解哪些包是标准库的一部分:https://docs.python.org/3/library/ (还有一些关于如何确定特定包是否是标准库的一部分的问题,例如How to check if a module/library/package is part of the python standard library?)当你创建一个新环境时,标准库中的包是唯一的默认情况下可用。还需要安装其他任何东西。

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