原来我一直安装 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 相关文章推荐
pygame学习笔记(4):声音控制
Apr 15 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
Python I/O与进程的详细讲解
Mar 08 Python
详解用Python练习画个美队盾牌
Mar 23 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
基于python3生成标签云代码解析
Feb 18 Python
Python tornado上传文件的功能
Mar 26 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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循环获取GET和POST值的代码
2008/04/09 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python快速排序算法实例分析
2017/11/29 Python
Python中property属性实例解析
2018/02/10 Python
Python实现的读写json文件功能示例
2018/06/05 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
django正续或者倒序查库实例
2020/05/19 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
《云雀的心愿》教学反思
2014/02/25 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
安全保证书
2015/01/16 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL