You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止pip安装conda已安装的Python包?

问题描述

我在测试个人Python包,使用Anaconda环境,其中已安装所需依赖包:执行conda list | egrep "rdkit|numpy"返回结果如下:

numpy                     1.19.2           py39h89c1606_0  
numpy-base                1.19.2           py39h2ae0177_0  
rdkit                     2022.03.1b1.0    py39he30056e_1    rdkit/label/beta

我的setup.py中未指定版本的依赖项配置为:

install_requires=[
    'rdkit',
    'numpy',
],

但执行pip install .时,pip仍会安装另一版本的rdkit,日志如下:

Collecting rdkit
  Using cached rdkit-2022.3.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.9 MB)

需求为:若包已安装(无论版本),让pip保留原包且不执行任何操作。

解决方法

方法1:安装时添加--no-deps参数

直接在安装命令中加入--no-deps,让pip完全跳过依赖的检查与安装:

pip install . --no-deps

这个方式简单直接,适合已经确认环境内所有依赖都已安装的场景。

方法2:修改setup.py的依赖版本约束

在install_requires中给依赖添加>=0的版本规则,这样pip会判定任何已安装的版本都满足要求,不会触发新的安装或更新:

install_requires=[
    'rdkit>=0',
    'numpy>=0',
],

pip的版本解析逻辑中,>=0会匹配所有有效版本,不会再去拉取新包。

方法3:针对conda环境使用环境标记(进阶)

如果需要仅在conda环境下跳过依赖处理,可以通过环境标记判断当前环境是否为conda环境(检查CONDA_PREFIX环境变量):

install_requires=[
    'rdkit; os.environ.get("CONDA_PREFIX") is not None',
    'numpy; os.environ.get("CONDA_PREFIX") is not None',
],

此方法适合需要区分不同运行环境的场景,一般推荐优先使用前两种更简洁的方案。

内容的提问来源于stack exchange,提问作者Sergey Sosnin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:39:47