原来我一直安装 Python 库的姿势都不对呀


Posted in Python onNovember 11, 2019

平常我都是直接执行 pip install 安装的第三方库,很多教程也是这么介绍的,一直以来我都认为这是标准的、正确的安装 Python 第三方库的姿势。直到我最近看到Python核心开发者Brett Cannon 写的一篇文章。

简单总结来说,他认为其实最正确的安装方式是使用 python-m pip 来执行 pip 命令,无论什么情况下均是如此。

他在文章里大致提出了以下几个建议:

  1. 建议用 python-m pip 安装三方库
  2. 务必使用虚拟环境,不要安装至系统 Python
  3. 建议用 pipx 独立安装工具
  4. 建议用 python-m venv 创建虚拟环境
  5. 可以将容器整体作为一个环境,跳过虚拟环境

我简单解释下每个建议背后的理由。

1. 建议用 python-m pip 安装三方库

理由是这样做,可以实现更加准确地控制库所安装的位置。

不少人的电脑里,会同时安装不同版本的 Python。少数极端的用户甚至会安装不同的小版本,如 3.7 和 3.7.4。这是直接用 pip的话,你自己可能都不清楚最终安装到了哪个版本的Python 下面。

python-m pip 命令,可以让你直接指定要安装到哪个版本。

2. 务必使用虚拟环境,不要安装至系统 Python

这个建议应该很多人都认同,在实践中也是这样执行的。如果不用虚拟环境隔离的话,系统版本的三方库会变得特别的庞杂,甚至出现系统依赖库的版本不合理,导致系统崩溃的严重问题。

3. 建议用 pipx 独立安装工具

如果你想尝试 black、mypy 等开发工具,可以考虑通过 pipx 将这些工具各自安装到独立的环境中,同时又能够直接在系统环境下调用终端的入口。

4. 建议用 python-m venv 创建虚拟环境

Brett 个人更倾向于使用 python-m venv 命令创建虚拟环境,理由和第一点建议相同,可以获得更大的控制权,精确指定所使用的版本。

当然,使用 virutalenv 也是一个非常普遍的方式。

5. 可以将容器整体作为一个环境,跳过虚拟环境

如果项目是容器化开发的,那么把每个容器当做成一个个独立的虚拟环境使用也是没有问题的。在容器里没有必要再单独去创建虚拟环境了。

当然前提是,你不要安装到系统自带的 Python 中。

总结

以上所述是小编给大家介绍的安装python库的正确姿势,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python使用百度翻译进行中翻英示例
Apr 14 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
Win7 64位下python3.6.5安装配置图文教程
Oct 27 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
Python OpenCV实现视频分帧
Jun 01 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
浅谈Python 函数式编程
Jun 20 Python
python实现三种随机请求头方式
Jan 05 Python
Python帮你识破双11的套路
Nov 11 #Python
如何基于Python批量下载音乐
Nov 11 #Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 #Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 #Python
Python序列化与反序列化pickle用法实例
Nov 11 #Python
详解Python可视化神器Yellowbrick使用
Nov 11 #Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 #Python
You might like
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
深入理解Javascript闭包 新手版
2010/12/28 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
给儿子的表扬信
2014/01/15 职场文书
《阳光》教学反思
2014/02/23 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
银行进社区活动总结
2014/07/07 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
三八妇女节标语
2014/10/09 职场文书
高中生逃课检讨书
2014/10/10 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
郭明义观后感
2015/06/08 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis