多个版本的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基于回溯法子集树模板解决选排问题示例
Sep 07 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
Nov 21 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
对django views中 request, response的常用操作详解
Jul 17 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
Python StringIO及BytesIO包使用方法解析
Jun 15 Python
python开发入门——set的使用
Sep 03 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
Django 用户认证Auth组件的使用
Nov 30 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 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 self与$this的详解
2013/06/08 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
php实现的双色球算法示例
2017/06/20 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
Vue.js第三天学习笔记(计算属性computed)
2016/12/01 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
python list中append()与extend()用法分享
2013/03/24 Python
Python读写Redis数据库操作示例
2014/03/18 Python
用Python编写简单的定时器的方法
2015/05/02 Python
Python socket编程实例详解
2015/05/27 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
python中的随机函数random的用法示例
2018/01/27 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
如何验证python安装成功
2020/07/06 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
Python 远程开关机的方法
2020/11/18 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
优秀的教师个人的中文求职信
2013/09/21 职场文书
初一地理教学反思
2014/01/16 职场文书