多个版本的python共存时使用pip的正确做法


Posted in Python onOctober 26, 2020

想学习Python3,但是暂时又离不开Python2。在Windows上如何让它们共存呢?

目前国内网站经常会让大家把其中一个python.exe改个名字(嗯,我也这样讲过,在此纠正一下),这样区分开两个可执行文件的名字,但是这样做有一个重大的隐患,就是修改了名字的那个python对应的pip将无法使用。

官方的解法是什么?

事实上这个问题几年以前Python社区就给出了官方解决方案,只不过国内一直没有注意到罢了。

我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面。这个启动器允许我们指定使用Python2还是Python3来运行代码(当然前提是你已经成功安装了Python2和Python3)。

如果你有一个Python文件叫 hello.py,那么你可以这样用Python2运行它

py -2 hello.py

类似的,如果你想用Python3运行它,就这样

py -3 hello.py

每次运行都要加入参数-2/-3还是比较麻烦,所以py.exe这个启动器允许你在代码中加入说明,表明这个文件应该是由python2解释运行,还是由python3解释运行。说明的方法是在代码文件的最开始加入一行

#! python2

或者

#! python3

分别表示该代码文件使用Python2或者Python3解释运行。这样,运行的时候你的命令就可以简化为

py hello.py

使用pip

当Python2和Python3同时存在于windows上时,它们对应的pip都叫pip.exe,所以不能够直接使用 pip install 命令来安装软件包。而是要使用启动器py.exe来指定pip的版本。命令如下:

py -2 -m pip install XXXX

-2 还是表示使用 Python2,-m pip 表示运行 pip 模块,也就是运行pip命令了。如果是为Python3安装软件,那么命令类似的变成

py -3 -m pip install XXXX

#! python2 和 # coding: utf-8 哪个写在前面?

对于Python2用户还有另外一个困惑,Python2要在代码文件顶部增加一行说明,才能够在代码中使用中文。如果指明使用的Python版本也需要在文件顶部增加一行,那哪一行应该放在第一行呢?

#! python2 需要放在第一行,编码说明可以放在第二行。所以文件开头应该类似于:

#! python2
# coding: utf-8

有了这些技巧,Python2和Python3就可以愉快地在一起玩耍了~

以上就是多版本python共存时使用pip的正确做法的详细内容,更多关于python pip的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 Python
python实现媒体播放器功能
Feb 11 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
mac 安装python网络请求包requests方法
Jun 13 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 Python
Django学习笔记之为Model添加Action
Apr 30 Python
python的一些加密方法及python 加密模块
Jul 11 Python
python游戏开发的五个案例分享
Mar 09 Python
TensorFlow固化模型的实现操作
May 26 Python
Python开发五子棋小游戏
Apr 28 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 #Python
如何使用Pytorch搭建模型
Oct 26 #Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 #Python
python递归函数用法详解
Oct 26 #Python
Python实现LR1文法的完整实例代码
Oct 25 #Python
Python操作word文档插入图片和表格的实例演示
Oct 25 #Python
python时间time模块处理大全
Oct 25 #Python
You might like
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
学习ExtJS Window常用方法
2009/10/07 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
建筑实习自我鉴定
2013/10/18 职场文书
活动志愿者自荐信
2014/01/27 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
黄金搭档广告词
2014/03/21 职场文书
《称象》教学反思
2014/04/25 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
python 批量压缩图片的脚本
2021/06/02 Python