【问题标题】:Creating Anaconda Environment from YML File Choking on Common Packages - os, pip, pandas从常见包上的 YML 文件阻塞创建 Anaconda 环境 - os、pip、pandas
【发布时间】:2020-02-21 06:21:23
【问题描述】:

在从 YML 文件创建环境时,为什么 anaconda 会在常见的包上窒息? 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

【问题讨论】:

  • os is part of Python's standard library,应该一直可用,不需要指定为依赖。
  • 是的,一定要从依赖项中删除os。另外,您是否手动创建了该文件? rasteriomatplotlib 两次出现在该列表中。
  • @orangeInk 我如何知道哪些包需要指定,哪些可用?除了标准库之外还有什么可用的(例如熊猫)?如果您可以添加答案和评论,那么我可以接受。谢谢!

标签: pip anaconda package installation environment


【解决方案1】:

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

您可以通过查看此处的文档来查看哪些包是标准库的一部分:https://docs.python.org/3/library/ (关于如何找出特定包是否是 std lib 的一部分,关于 SO 也有一些问题,例如 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 的文件,其中包含所有必需的依赖项。

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2021-10-30
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多