为什么从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
答案 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文件中有两个包被列出了两次(rasterio
和matplotlib
),这让我觉得您是手动创建该文件的。您可以通过激活环境并运行conda env export > environment.yml
来生成conda环境文件,该文件将创建一个具有所有必需依赖项的名为environment.yml
的文件。