原来我一直安装 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中条件选择和循环语句使用方法介绍
Mar 13 Python
python创建临时文件夹的方法
Jul 06 Python
详解Django rest_framework实现RESTful API
May 24 Python
如何利用Boost.Python实现Python C/C++混合编程详解
Nov 08 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python callable内置函数原理解析
Mar 05 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 Python
python如何快速拼接字符串
Oct 28 Python
Python 实现集合Set的示例
Dec 21 Python
Python实现石头剪刀布游戏
Jan 20 Python
python_tkinter事件类型详情
Mar 20 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
mysql5写入和读出乱码解决
2006/11/25 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
python matplotlib中文显示参数设置解析
2017/12/15 Python
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
python 装饰器的基本使用
2021/01/13 Python
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
培训讲师邀请函
2014/01/10 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
单位委托书范本
2014/04/04 职场文书
一年级评语大全
2014/04/23 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
python实现学员管理系统(面向对象版)
2022/06/05 Python