Python_学习之安装

目录:

  1. Python在windows上的安装

  2. Python在Linux上的安装

  3. Python2与Python3共存的切换

  4. Python2与Python3的区别

  5. Python2与Python3编码的区别

1. Python在windows上的安装
1.1、从官网下载合适的版本:https://www.python.org/downloads/

1.2、和传统软件一般,双击安装到计划安装的位置,默认安装到C:\Python39

1.3、 如果安装是没有点让软件进行配置环境变量,为达到可以在dos命令行中直接运行Python命令就启动Python的话,需要人工配置环境变量,操作如下【win10_x64位】:

桌面【右键我的电脑】--->滑到底部【点击高级系统设置】--->【点击环境变量】---> 在Administrator

的用户变量中【双击变量名为Path的一行】---> 【点击新建】---> 将python的安装目录添加到其中,如下图

Python_学习之安装

因现实中很多公司有的老项目还是用的python2,因此你可能需要安装python2,安装过程一样,但需要配置python2和python3都是执行python.exe文件的,而path执行是按从上到下的顺序执行的,因此您需要根据自己的情况,配置系统默认的python版本是那个版本,默认的那个版本在path配置中将其上移到另一个版本上面即可。

1.4、测试是否安装成功,打开命令行界面,输入如下命令,如果显示正常则表示安装成功

Python_学习之安装

或者通过python -V 查看安装的版本也能测试是否安装成功。

2. Python在Linux上的安装
一般公司都是部署在centos系统上的,目前主流是centos7和centos8两种,centos7默认是安装了python2.7的版本的,而cenos8默认未安装

centos7

a、一种下载离线包安装

可到官网上下载最新版本的源码包:https://www.python.org/downloads/source/

解压到你计划安装的位置


tar -zxvf python-3.7.0b4.tgz -C /tmp/python3.7

安装

# 根据你下载的包是压缩包还是rpm包不同安装不同

# 源码安装【1】
./configure --prefix=/opt/python/   预编译
make all 编译
make install   安装

# rpm包安装【2】
yum -y --installroot=/tmp/python-3.7
默认安装在/usr/bin/python

查看安装版本


/usr/bin/python -V

配置修改默认版本

# 改名
mv /usr/bin/python /usr/bin/python3.7  
# 创建短链接
ln -s /usr/bin/python3.7 /usr/bin/python

防止yum执行异常,修改yum使用的Python版本

# 因为yum工具就是通过python安装的,所以需要修改
vim /usr/bin/yum

将头部/usr/bin/python 改为/usr/bin/python3.7

b. 通过yum工具直接安装

安装python

yum -y install yum-utils
yum groupinstall development
yum install https://centos7.iuscommunity.org/ius-release.rpm # 配置官方库
yum install python36u

# 之后执行命令只能用python3.6 开头,可以做别名alias python3='python3.6'并写入到
echo "alias python3='python3.6'" >> /etc/profile
. /etc/profile

安装pip包管理器

yum -y install python36u-pip
设置别名[pip安装好后,也只能pip3.6开头执行命令,故需设置别名]
echo "alias pip3='pip3.6'" >> /etc/profile
soure /etc/profile

# 查看已安装好的包 可能需要更新,按提示更新即可
pip3 list
  • centos8
# 更换yum源为阿里云
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak && curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo && yum clean all && yum makecache

# 安装
yum -y install python38
# 查看Python安装
whereis python
python3 --version
pip3 list

3. Python2与Python3共存的切换
由于历史原因,Python有两个大的版本分支,Python2和Python3,又由于一些库只支持某个版本分支,所以需要在电脑上同时安装Python2和Python3,因此如何让两个版本的Python兼容,如何让脚本在对应的Python版本上运行,这个是值得总结的。

对于Linux来说,切换相对容易些

$ python
Python 2.7.5 (default, Aug  4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
$ python2
Python 2.7.5 (default, Aug  4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
# 执行python3版本
$ python3

对于windows来说因为是按path环境变量顺序配置的,因此如果一个服务需要在两种环境中测试就需要来回切换,通过调整path中python的环境变量顺序会非常麻烦,而发现python在Windows中执行的程序都叫python.exe,因此一种解决方案是将python2中的该文件名改为python2.exe,python3中对应的文件名改为python3.exe,修改可执行文件的方式,不是特别推荐,不过官方有提供一种方案,建议采用。

# python2
C:\Users\Administrator>py -2
Python 2.7.16 (v2.7.16:413a49145e, Mar  4 2019, 01:37:19) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

# python3
C:\Users\Administrator>py -3
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

pip包管理器同样可以采用该方案,在不同的环境中安装需要的依赖包


当需要python2的pip时,只需

py -2 -m pip install xxx
当需要python3的pip时,只需

py -3 -m pip install xxx
python2和python3的pip package就这样可以完美分开了。

4. Python2与Python3的区别

  1. py2默认编码使用的是ASCII,py3使用的是Unicode

  2. py2中的Unicode就是py3中的str

  3. py2 中有range()、xrange()(生成器),py3中只有range()

  4. py2 print 引起来即可,也可加括号,py3 需要小括号括起来

  5. py2 交互用raw_input ,py3 用input

  6. py2 的库有很多其他语言的很多陋习

5. Python2与Python3编码的对比
编码基础普及:

数据类型之间的转换:

编码:
ASCII ANSI(GBK) UNICODE UTF-8
      英文               中文
ASCII   8位、1个字节       无法识别       其他国家无法识别
GBK     8位、2个字节       16位、2个字节   (汉字有9万多个,2**16 =65536不够)
Unicode 8位、4个字节       32位、4个字节     浪费内存
Utf-8   8位、1个字节       24位、3个字节       最少一个字节、动态的(欧洲文字:16bit 2bytes)

1、除了ASCII码外,其他信息不能直接转换,需要进行编码encoding
2、内存中存的是Unicode、传输和存储用的是(GBK、utf-8……)
3、所有的编码都是继承ascii后写的,所以英文等都还是8个字节

Python_学习之安装

在 Python 中,不论是 Python2 还是 Python3 中,总体上说,字符都只有两大类:

  1. 通用的 Unicode 字符;

  2. (unicode 被编码后的)某种编码类型的字符,比如 UTF-8,GBK 等类型的字符。

Python2 中字符的类型:

  • str:已经编码后的字节序列

  • unicode:编码前的文本字符

Python3 中字符的类型:

str:编码过的 unicode 文本字符

bytes:编码前的字节序列

我们可以认为字符串有两种状态,即文本状态和字节(二进制)状态。Python2 和 Python3 中的两种字符类型都分别对应这两种状态,然后相互之间进行编解码转化。编码就是将字符串转换成字节码,涉及到字符串的内部表示;解码就是将字节码转换为字符串,将比特位显示成字符。

在 Python2 中,str 和 unicode 都有 encode 和 decode 方法。但是不建议对 str 使用 encode,对 unicode 使用 decode, 这是 Python2 设计上的缺陷。Python3 则进行了优化,str 只有一个 encode 方法将字符串转化为一个字节码,而且 bytes 也只有一个 decode 方法将字节码转化为一个文本字符串。

Python2 的 str 和 unicode 都是 basestring 的子类,所以两者可以直接进行拼接操作。而 Python3 中的 bytes 和 str 是两个独立的类型,两者不能进行拼接。

Python2 中,普通的,用引号括起来的字符,就是 str;此时字符串的编码类型,对应着你的 Python 文件本身保存为何种编码有关,最常见的 Windows 平台中,默认用的是 GBK。Python3 中,被单引号或双引号括起来的字符串,就已经是 Unicode 类型的 str 了。

对于 str 为何种编码,有一些前提:

  1. Python 文件开始已经声明对应的编码

  2. Python 文件本身的确是使用该编码保存的

  3. 两者的编码类型要一样(比如都是 UTF-8 或者都是 GBK 等)

这样 Python 解析器才能正确的把文本解析为对应编码的 str。

总体来说,在 Python3 中,字符编码问题得到了极大的优化,不再像 Python2 那么头疼。在 Python3 中,文本总是 Unicode, 由 str 类型进行表示,二进制数据使用 bytes 进行表示,不会将 str 与 bytes 偷偷的混在一起,使得两者的区别更加明显。

猜你喜欢

转载自blog.51cto.com/15127518/2686406