原来我一直安装 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自动重试HTTP连接装饰器
Apr 28 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
在python环境下运用kafka对数据进行实时传输的方法
Dec 27 Python
python求平均数、方差、中位数的例子
Aug 22 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
python爬虫库scrapy简单使用实例详解
Feb 10 Python
Python切割图片成九宫格的示例代码
Mar 10 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
使用Django的JsonResponse返回数据的实现
Jan 15 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
输出控制类
2006/10/09 PHP
基于文本的搜索
2006/10/09 PHP
解析php入库和出库
2013/06/25 PHP
php引用传值实例详解学习
2013/11/06 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
javascript import css实例代码
2008/07/18 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
用纯Node.JS弹出Windows系统消息提示框实例(MessageBox)
2017/05/17 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
python flask中动态URL规则详解
2019/11/22 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
Python itertools.product方法代码实例
2020/03/27 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
旅游饭店管理专业自荐书
2014/06/28 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
python scrapy简单模拟登录的代码分析
2021/07/21 Python
MySQL读取JSON转换的方式
2022/03/18 MySQL
python通过新建环境安装tfx的问题
2022/05/20 Python