多个版本的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登录Dr.com思路以及代码分享
Jun 25 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
python实现输入数字的连续加减方法
Jun 22 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
python实现银行管理系统
Oct 25 Python
通过实例了解python property属性
Nov 01 Python
Python 项目转化为so文件实例
Dec 23 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
解决Keras使用GPU资源耗尽的问题
Jun 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
php读取mysql的简单实例
2014/01/15 PHP
php获取字段名示例分享
2014/03/03 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
php实现httpRequest的方法
2015/03/13 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
Python读取Word(.docx)正文信息的方法
2018/03/15 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Python几种常见算法汇总
2020/06/02 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
Python 操作 MySQL数据库
2020/09/18 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
专科毕业生求职简历的自我评价
2013/10/12 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
小学安全汇报材料
2014/08/14 职场文书
学校师德师风整改措施
2014/10/27 职场文书
高一军训口号
2015/12/25 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
MySQL七种JOIN类型小结
2021/10/24 MySQL
mysql 获取时间方式
2022/03/20 MySQL