conda环境中不同pip使用方式的等价性技术问询
嘿,这俩问题本质都是在问conda环境里调用pip的不同方式是否等价,我给你掰扯清楚:
问题1:从conda环境文件夹中使用pip,与直接运行该环境对应的pip可执行文件是否等效?
完全等效!其实这俩说的是同一个事儿——当你直接运行conda环境目录下的pip可执行文件(比如/opt/anaconda3/envs/myenv/bin/pip),就是在调用这个环境专属的pip工具,所有安装的包都会乖乖待在该环境的site-packages目录里,不会乱跑到系统全局或者其他conda环境里。
所谓“从conda环境文件夹中使用pip”,本质就是直接运行这个路径下的pip,没有任何区别,核心都是跳过conda环境激活步骤,直接指定目标环境的pip来干活。
问题2:执行命令
conda activate -n myenv pip install mypackage,与直接运行命令/opt/anaconda3/envs/myenv/bin/pip install mypackage是否等效? 先给你敲个警钟:你写的conda activate -n myenv pip install mypackage是错误的命令写法!conda activate的逻辑是先激活目标环境,之后在这个环境的上下文里执行后续命令,不能把pip install直接跟在后面当参数丢给它。这个命令会被conda当成无效参数解析,大概率直接报错,根本没法完成安装。
正确的“一行式”在指定conda环境里执行pip的写法应该用conda run:
conda run -n myenv pip install mypackage
如果是这种正确写法,那和直接运行环境内的pip可执行文件就是完全等效的——两者都是在目标conda环境的上下文里执行pip安装,包都会被安装到该环境的专属目录,不会影响其他环境。但你原命令的写法是错的,和直接运行pip完全不等价,因为它根本跑不起来。
内容的提问来源于stack exchange,提问作者Rinat Veliakhmedov
相关产品推荐
相关产品推荐

