多个版本的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列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
Python脚本判断 Linux 是否运行在虚拟机上
Apr 25 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
Python 数据结构之队列的实现
Jan 22 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
基于python的ini配置文件操作工具类
Apr 24 Python
pycharm快捷键汇总
Feb 14 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
VueJS全面解析
2016/11/10 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
jQuery实现动态删除LI的方法
2017/05/30 jQuery
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
python实现解数独程序代码
2017/04/12 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
python matplotlib拟合直线的实现
2019/11/19 Python
sklearn的predict_proba使用说明
2020/06/28 Python
python类共享变量操作
2020/09/03 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
教师自我鉴定范文
2014/03/20 职场文书
批评与自我批评范文
2014/10/15 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
2015年副班长工作总结
2015/05/15 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
唐山大地震的观后感
2015/06/05 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers