多个版本的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实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Python 文件处理注意事项总结
Apr 10 Python
Python机器学习logistic回归代码解析
Jan 17 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
python时间序列按频率生成日期的方法
May 14 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
wxpython绘制圆角窗体
Nov 18 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
PyQt实现计数器的方法示例
Jan 18 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
Document 对象的常用方法
2009/07/31 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
Python itertools模块详解
2015/05/09 Python
python抽象基类用法实例分析
2015/06/04 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Python 存取npy格式数据实例
2020/07/01 Python
瀑布模型都有哪些优缺点
2014/06/23 面试题
考试作弊被抓检讨书
2014/01/10 职场文书
节约能源标语
2014/06/17 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
MySQL数据库简介与基本操作
2022/05/30 MySQL