归纳一下 pip install 与 conda install 的区别以及使用经验

 

        近几天安装好conda开始设置pycharm使用虚拟环境,并用pyinstaller对一个脚本进行打包,脚本在pycharm里能正常运行,但打包成exe文件后运行报错说模块找不到,报错信息忘截屏了,大概是openpyxl.xxx.write()这样子,我怀疑是openpyxl模块没有打包进去,但用conda list命令和pip list命令都能查到该环境里有这个模块,再加上打包后exe文件比较小才5M多,于是怀疑打包时没有导入到正确的路径或文件,因为记得当时是用conda install安装的包,于是猜想会不会是conda insatll和pip install安装的包有异呢?于是干脆用conda uninstall openpyxl卸载了,重新用 pip install openpyxl安装,然后再重新pyinstaller打包,打包完成后一看exe文件有7M多,再运行,一切正常了。于是我想总结一下有关conda install和pip installr的使用注意,在网上认真找资料学习一番,对这两种安装方式的区别进行归纳如下:

一、区别综述:

1、 关于支持语言:

        pip 是 python 官方推荐的包下载工具,但是只能安装python包;

        conda 是一个跨平台(支持linux, mac, win)的通用包和环境管理器,它除了支持python外,还能安装各种其他语言的包,例如 C/C++, R语言等。

2、关于拉取来源:

        pip 从PyPI(Python Package Index)上拉取数据。上面的数据更新更及时,涵盖的内容也更加全面;

        conda 从 Anaconda.org 上拉取数据。虽然Anaconda上有一些主流Python包,但在数量级上明显少于PyPI,缺少一些小众的包。

        总结:pypi上有超150000多个包,而Anaconda.org 上只有1500多包,可见两者的差异之大。

3、关于包的格式:

        pip 里的软件包为wheel版或源代码发行版。wheel属于已编译发新版的一种,下载好后可以直接使用;而源代码发行版必须要经过编译生成可执行程序后才能使用,编译的过程是在用户的机子上进行的。

        conda 里的软件包都是二进制文件,下载后即可使用,不需要经过编译。

4、关于功能使用:

        pip 没有内置支持环境隔离,只能借助其他工具例如virtualenv or venv实现环境隔离。

        conda 有能力直接创建隔离的环境,并且能对所有conda install的包以及版本进行统一管理。

        总结:这点勿需多言,装conda就是冲着管理包和做虚拟环境来的。

5、关于解决包的依赖关系:

        pip安装包时,尽管也对当前包的依赖做检查,但是并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性就越来越大。

        conda会检查当前环境下所有包之间的依赖关系,保证当前环境里的所有包的所有依赖都会被满足。

        总结:但是当两者混用时(因为conda install的包源不足不得不混用pip install),conda不会管理pip install的包,有时会产生冲突。

  1. 库的储存位置:

        在conda虚拟环境下使用 pip install 安装的库: 如果使用系统的的python,则库会被保存在 ~/.local/lib/python3.x/site-packages 文件夹中;如果使用的是conda内置的python,则会被保存到 anaconda3/envs/current_env/lib/site-packages中。

        conda install 安装的库都会放在anaconda3/pkgs目录下。这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而不用重复下载。

        总结:既然我们使用了conda,建议就是卸载系统原来装的python,因为conda本身带了python,两者同时使用很容易产生冲突!(血泪教训啊,曾因为这个导致pycharm使用conda创建虚拟环境总是报错无法成功)。

二、经验总结

1、 推荐使用conda创建虚拟环境,不但能做到环境隔离,还能做到python版本和各种包的统一管理,还你一个清爽的开发环境;

        对于python版本管理有个疑问,比如我安装的conda自带python3.9版,虽然在pycharm里使用conda设置环境为python3.8版,用conda list查看的结果是3.8版,但如果用conda info查看显示却仍然为python3.9版,并且用pyinstaller打包后exe文件运行时仍然需要去C:\Users\Administrator\AppData\Local\Temp(pyinstaller打包后的exe文件运行时会在这个目录下临时创建一个_MEI45482类似的目录)下调用python39.dll才能继续运行,坑人的是windows7不支持python3.9以上版本,pyinstaller打包后的exe文件运行根本不会创建这个目录,导致运行不了报错,后来只得重装带3.8版pythonr的conda才能解决问题!

 2、下载安装第三方包:

        能用conda安装的就先用conda(conda下载是真的慢,就算换源了还是慢,下大点的文件还容易失败,但谁让人家有统一管理的优势,下载一次之后可以无限次复用是真的香!),不行再使用pip安装。

        但也要小心两者之间的冲突,因为conda的包有通用包,有可能下的包不是python的包而导致不能使用(就象本文导语所述的例子),这时可考虑卸载conda的包用pip重装。

 [参考文章]:

《全面总结 pip install 与 conda install 的使用区别》

《pip install 和conda install有什么区别吗?》

  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值