多个版本的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通过加号运算符操作列表的方法
Jul 28 Python
聊聊Python中的pypy
Jan 12 Python
pandas值替换方法
Jul 10 Python
python通过zabbix api获取主机
Sep 17 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
python3使用pandas获取股票数据的方法
Dec 22 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
Python在字符串中处理html和xml的方法
Jul 31 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 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中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
Python函数嵌套实例
2014/09/23 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
信息技术专业个人自我评价
2013/12/11 职场文书
文科生自我鉴定
2014/02/15 职场文书
财产公证书样本
2014/04/04 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
民事诉讼代理词
2015/05/25 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
Python日志模块logging用法
2022/06/05 Python
JS实现简单九宫格抽奖
2022/06/28 Javascript