conda list显示已安装包,创建虚拟环境却提示PackagesNotFound
问题描述
我在conda环境中使用pip安装了Natasha及其依赖包,这些包均能在conda list中显示(标记为pypi_0)。执行conda pip install Natasha时,系统提示所有依赖已满足:
Requirement already satisfied: Natasha in c:\getfunds\lib\site-packages (1.4.0) Requirement already satisfied: razdel>=0.5.0 in c:\getfunds\lib\site-packages (from Natasha) (0.5.0) Requirement already satisfied: ipymarkup>=0.8.0 in c:\getfunds\lib\site-packages (from Natasha) (0.9.0) Requirement already satisfied: yargy>=0.14.0 in c:\getfunds\lib\site-packages (from Natasha) (0.15.0) Requirement already satisfied: navec>=0.9.0 in c:\getfunds\lib\site-packages (from Natasha) (0.10.0) Requirement already satisfied: pymorphy2 in c:\getfunds\lib\site-packages (from Natasha) (0.9.1) Requirement already satisfied: slovnet>=0.3.0 in c:\getfunds\lib\site-packages (from Natasha) (0.5.0) Requirement already satisfied: pymorphy2-dicts-ru<3.0,>=2.4 in c:\getfunds\lib\site-packages (from pymorphy2->Natasha) (2.4.417127.4579844)
但尝试创建虚拟环境时,出现PackagesNotFound错误。我怀疑是conda频道配置问题,但不清楚需要添加哪些频道,当前我的频道列表如下:
- https://conda.anaconda.org/pypi_0/win-64
- https://conda.anaconda.org/pypi_0/noarch
- https://repo.anaconda.com/pkgs/main/win-64
- https://repo.anaconda.com/pkgs/main/noarch
- https://repo.anaconda.com/pkgs/r/win-64
- https://repo.anaconda.com/pkgs/r/noarch
- https://repo.anaconda.com/pkgs/msys2/win-64
- https://repo.anaconda.com/pkgs/msys2/noarch
解决方案
1. 问题核心原因
你通过pip安装的包属于PyPI源,conda默认频道(main、r、msys2)没有收录这些包,而你添加的pypi_0频道并非官方有效conda频道——conda无法直接从PyPI源拉取包来创建环境,必须借助conda兼容频道,或在环境创建完成后用pip补装。
2. 具体解决步骤
方式一:先创建环境再用pip安装Natasha
这是最直接的方案,先搭建干净的conda环境,激活后再安装依赖:
# 创建指定Python版本的虚拟环境(示例为3.8,可按需调整) conda create -n my_natasha_env python=3.8 # 激活环境 conda activate my_natasha_env # 用pip安装Natasha及其所有依赖 pip install Natasha
方式二:添加conda-forge频道补充依赖
Natasha的部分依赖包可在conda-forge频道找到,添加该频道并设置优先级后,conda能自动匹配可用包:
# 添加conda-forge频道,设为高优先级 conda config --add channels conda-forge conda config --set channel_priority strict
之后可先通过conda安装能找到的依赖,再用pip补装Natasha:
conda create -n my_natasha_env python=3.8 razdel ipymarkup yargy navec pymorphy2 slovnet conda activate my_natasha_env pip install Natasha
方式三:移除无效的pypi_0频道
你当前添加的pypi_0频道无效,建议移除避免干扰conda的包检索:
conda config --remove channels https://conda.anaconda.org/pypi_0/win-64 conda config --remove channels https://conda.anaconda.org/pypi_0/noarch
3. 注意事项
- 尽量避免在环境创建阶段混用conda和pip,优先用conda安装可检索到的包,剩余依赖用pip补充。
- 如果必须用conda管理所有包,可尝试用
conda skeleton pypi Natasha生成conda包构建脚本后本地构建,但步骤繁琐,一般不推荐。
内容的提问来源于stack exchange,提问作者Literalomicus
相关产品推荐
相关产品推荐

