1. CentOS 7 系统简单 Python 环境使用
1.1. 查看当前系统 Python 版本
Python在CentOS7.6系统中默认已经安装完成,我们经常使用的 yum 包管理工具就是用Python语言实现的。我们可以使用 python -V
命令查看当前系统python的版本信息:
[root@localhost ~]# python -V
Python 2.7.5
[root@localhost ~]#
如上图所示,系统中默认使用的python版本为 2.7.5
要想运行python程序,我们可以使用python的交互解释运行环境,终端中直接输入 python
命令即可:
[root@localhost ~]# python
Python 2.7.5 (default, Apr 11 2018, 07:36:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world")
hello world
>>>
>>> exit()
[root@localhost ~]#
上图中进入交互解释运行环境,显示了 python 环境的相关信息。然后尝试执行了第一行代码 print("hello world)
,成功运行并打印了 hello world 内容;接着我们执行了退出交互环境的函数 exit()
,成功退出python交互解释环境。
除了使用 python 交互解释环境,我们还可以直接编写 python 源代码文件使用 vim 编辑器编写一个简单的 hello.py ,然后使用 python 命令直接运行它,如图:
[root@localhost ~]# cat hello.py
print("hello world")
[root@localhost ~]# python hello.py
hello world
[root@localhost ~]#
1.2. 使用 CentOS7 系统中的 Python3 版本
默认情况下 CentOS7 系统中自带的 Python 版本是2.7版本。我们当前学习的 Python 版本为 Python3 版本,所以我们可以通过 yum 软件包管理工具安装 python3 版本, 不过由于 CentOS7 的 Base 软件包仓库默认没有 Python3版本 ,因此查找失败,如下图:
[root@localhost ~]# yum list "*python3*"
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: mirrors.163.com
* updates: mirrors.163.com
Error: No matching Packages to list
[root@localhost ~]#
除了 Base 仓库,我们还可以使用 epel 仓库,要想使用 epel 仓库,我们需要先安装一下 epel 仓库,安装过程如下:
[root@localhost ~]# yum install epel-release -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.njupt.edu.cn
* extras: mirrors.163.com
* updates: mirrors.163.com
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
epel-release noarch 7-11 extras 15 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 15 k
Installed size: 24 k
Downloading packages:
warning: /var/cache/yum/x86_64/7/extras/packages/epel-release-7-11.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for epel-release-7-11.noarch.rpm is not installed
epel-release-7-11.noarch.rpm | 15 kB 00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-5.1804.el7.centos.x86_64 (@anaconda)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : epel-release-7-11.noarch 1/1
Verifying : epel-release-7-11.noarch 1/1
Installed:
epel-release.noarch 0:7-11
Complete!
[root@localhost ~]#
epel 仓库安装完毕后,我们使用 yum 命令再次查询 python3 ,发现有多个不同版本的 python3 软件包。这里我节选了一部分内容,如下图:
root@localhost ~]# yum list "*python3*"
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 7.1 kB 00:00
* base: centos.ustc.edu.cn
* epel: mirrors.yun-idc.com
* extras: mirrors.163.com
* updates: centos.ustc.edu.cn
epel | 4.7 kB 00:00
(1/3): epel/x86_64/group_gz | 88 kB 00:00
(2/3): epel/x86_64/updateinfo | 1.0 MB 00:03
(3/3): epel/x86_64/primary_db | 6.6 MB 00:05
Available Packages
abrt-addon-python3.noarch 2.1.11-49.el7 epel
boost-python34.x86_64 1.53.0-28.el7 epel
boost-python34-devel.x86_64 1.53.0-28.el7 epel
python3-urjtag.x86_64 2017.10-2.el7 epel
python3-virtualenv-doc.noarch 15.1.0-2.el7 epel
python34.x86_64 3.4.9-2.el7 epel
python34-Cython.x86_64 0.23.5-1.el7 epel
python34-PyMySQL.noarch 0.9.2-1.el7 epel
python34-PyYAML.x86_64 3.11-3.el7 epel
·
·省略部分软件包信息.......
·
python34-aiosmtpd.noarch 1.0-2.el7 epel
python34-zope-interface.x86_64 4.3.3-1.el7 epel
python34-zope-schema.noarch 4.4.1-2.el7 epel
python34-zope-testing.noarch 4.1.2-2.el7 epel
python36.x86_64 3.6.6-2.el7 epel
python36-PyYAML.x86_64 3.11-3.el7 epel
python36-asn1crypto.noarch 0.24.0-6.el7 epel
python36-blosc.x86_64 1.2.8-4.el7 epel
python36-bsddb3.x86_64 6.2.6-3.el7 epel
python36-chardet.noarch 2.3.0-4.el7 epel
uwsgi-plugin-python34-gevent.x86_64 2.0.17.1-1.el7 epel
uwsgi-plugin-python34-tornado.x86_64 2.0.17.1-1.el7 epel
uwsgi-plugin-python36.x86_64 2.0.17.1-1.el7 epel
uwsgi-plugin-python36-gevent.x86_64 2.0.17.1-1.el7 epel
[root@localhost ~]#
根据上图中的 epel 仓库 python3 软件包信息,我们选择 python36.x86_64 版本进行安装,如图:
[root@localhost ~]# yum install python36 -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.njupt.edu.cn
* epel: mirrors.yun-idc.com
* extras: mirrors.163.com
* updates: mirrors.163.com
Resolving Dependencies
--> Running transaction check
---> Package python36.x86_64 0:3.6.6-2.el7 will be installed
--> Processing Dependency: python36-libs(x86-64) = 3.6.6-2.el7 for package: python36-3.6.6-2.el7.x86_64
--> Processing Dependency: libpython3.6m.so.1.0()(64bit) for package: python36-3.6.6-2.el7.x86_64
--> Running transaction check
---> Package python36-libs.x86_64 0:3.6.6-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
python36 x86_64 3.6.6-2.el7 epel 66 k
Installing for dependencies:
python36-libs x86_64 3.6.6-2.el7 epel 8.6 M
Transaction Summary
================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 8.6 M
Installed size: 36 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/epel/packages/python36-3.6.6-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Public key for python36-3.6.6-2.el7.x86_64.rpm is not installed
(1/2): python36-3.6.6-2.el7.x86_64.rpm | 66 kB 00:01
(2/2): python36-libs-3.6.6-2.el7.x86_64.rpm | 8.6 MB 00:29
--------------------------------------------------------------------------------
Total 297 kB/s | 8.6 MB 00:29
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
Userid : "Fedora EPEL (7) <epel@fedoraproject.org>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package : epel-release-7-11.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : python36-libs-3.6.6-2.el7.x86_64 1/2
Installing : python36-3.6.6-2.el7.x86_64 2/2
Verifying : python36-3.6.6-2.el7.x86_64 1/2
Verifying : python36-libs-3.6.6-2.el7.x86_64 2/2
Installed:
python36.x86_64 0:3.6.6-2.el7
Dependency Installed:
python36-libs.x86_64 0:3.6.6-2.el7
Complete!
[root@localhost ~]#
python36 安装成功后,我们可以使用 rpm 命令查看一下 python36 具体包含哪些命令和文件,如图:
root@localhost ~]# rpm -ql python36
/usr/bin/pydoc3.6
/usr/bin/python3.6
/usr/bin/python3.6m
/usr/bin/python36
/usr/bin/pyvenv-3.6
/usr/share/doc/python36-3.6.6
/usr/share/doc/python36-3.6.6/README.rst
/usr/share/licenses/python36-3.6.6
/usr/share/licenses/python36-3.6.6/LICENSE
/usr/share/man/man1/python3.6.1.gz
[root@localhost ~]#
与 python2.7 版本一样,python36 依旧可以使用交互解释环境和 python 命令模式运行代码,这里我就不演示交互解释环境,我们直接使用 python36 命令运行之前编写好的 hello.py 程序 如下图:
[root@localhost ~]# python36 -V
Python 3.6.6
[root@localhost ~]# python36 hello.py
hello world
[root@localhost ~]#
1.3. CentOS7 系统中 Pycharm 环境使用
之前演示的 hello.py 程序非常简单,属于演示测试。正常的 Python 项目根据业务需求和功能通常包含众多 python 源文件,再使用传统的 vim 进行编写和管理就不是和方便了。下面给大家在 Linux 环境下安装一款专业的集成开发工具 (IDE) Pycharm 。
安装 Pycharm 之前,我们现在 CentOS 系统中创建一个专门用来学习 Python 开发的用户,比如,我们创建一个用户叫 python、devops,ai 等,然后再退出 root 用户,使用新建的用户登录系统,如下图:
[root@localhost ~]# passwd python
Changing password for user python.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
使用刚才创建的 python 用户登录后,打开命令行终端,我们使用 wget 命令下载 pycharm 官网的免费开源版
安装包 pycharm-community-2018.3.5.tar.gz ,如下图:
[python@localhost ~]$ wget https://download.jetbrains.com/python/pycharm-community-2018.3.5.tar.gz
--2019-03-25 17:27:00-- https://download.jetbrains.com/python/pycharm-community-2018.3.5.tar.gz
Resolving download.jetbrains.com (download.jetbrains.com)... 54.72.98.183, 52.18.241.155, 2a05:d018:93b:d103:524e:e6ed:6592:1823, ...
Connecting to download.jetbrains.com (download.jetbrains.com)|54.72.98.183|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://download.jetbrains.8686c.com/python/pycharm-community-2018.3.5.tar.gz [following]
--2019-03-25 17:27:02-- https://download.jetbrains.8686c.com/python/pycharm-community-2018.3.5.tar.gz
Resolving download.jetbrains.8686c.com (download.jetbrains.8686c.com)... 60.221.21.254, 2408:876c:0:100::25
Connecting to download.jetbrains.8686c.com (download.jetbrains.8686c.com)|60.221.21.254|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 311914955 (297M) [application/octet-stream]
Saving to: ‘pycharm-community-2018.3.5.tar.gz’
100%[=================================================================================================>] 311,914,955 1.22MB/s in 7m 53s
2019-03-25 17:34:55 (644 KB/s) - ‘pycharm-community-2018.3.5.tar.gz’ saved [311914955/311914955]
[python@localhost ~]$
[python@localhost ~]$ ll
total 304644
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Desktop
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Documents
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Downloads
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Music
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Pictures
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Public
-rw-rw-r--. 1 python python 311914955 Feb 27 19:15 pycharm-community-2018.3.5.tar.gz
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Templates
drwxr-xr-x. 2 python python 4096 Mar 25 17:02 Videos
[python@localhost ~]$
上图中,下载软件包过程比较慢,建议提前下载好对应的软件包,方便后续安装操作。安装过程比较简单,直接解压开就可以使用:
[python@localhost ~]$ mkdir software
[python@localhost ~]$ cd software/
[python@localhost software]$ cd ..
[python@localhost ~]$ tar xf pycharm-community-2018.3.5.tar.gz -C software/
[python@localhost ~]$ cd software
[python@localhost software]$ mv pycharm-community-2018.3.5 pycharm180305
[python@localhost software]$ cd pycharm180305/
[python@localhost pycharm180305]$ cd bin
[python@localhost bin]$ ls
format.sh fsnotifier-arm libdbm64.so pycharm64.vmoptions pycharm.svg
fsnotifier idea.properties log.xml pycharm.png pycharm.vmoptions
fsnotifier64 inspect.sh printenv.py pycharm.sh restart.py
[python@localhost bin]$ ./pycharm.sh
Mar 25, 2019 5:45:20 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Mar 25, 2019 5:45:20 PM java.util.prefs.FileSystemPreferences$6 run
WARNING: Prefs file removed in background /home/python/.java/.userPrefs/prefs.xml
[python@localhost bin]$
上图中直接可以在 pycharm 的bin目录下运行 pycharm.sh 但是当前的终端被占用了。
下面我们设置一个 pycharm 的桌面快捷方程式,避免在终端中使用命令开启,具体步骤如下图:
[python@localhost ~]$ cd Desktop/
[python@localhost Desktop]$ touch pycharm.desktop
[python@localhost Desktop]$ vi pycharm.desktop
[python@localhost Desktop]$ cat pycharm.desktop
[Desktop Entry]
Name=pycharm
Exec=/home/python/software/pycharm180305/bin/pycharm.sh
Type=Application
Icon=/home/python/software/pycharm180305/bin/pycharm.png
Terminal=false
[python@localhost Desktop]$
1.4. Pycharm 中安装 Jupyter
我们通过 CentOS7 系统桌面中创建的 pycharm 快捷方程式打开 pycharm ,创建一个 test 项目然后点击 pycharm中的控制台,进行 pip 的跟新和 jupyter 的安装,如图:
(venv) [python@localhost test]$ pip install --upgrade pip
(venv) [python@localhost test]$ pip install jupyter
(venv) [python@localhost test]$ jupyter notebook --ip=0.0.0.0 --port=8000
[I 18:25:00.814 NotebookApp] Serving notebooks from local directory: /home/python/PycharmProjects/test
[I 18:25:00.815 NotebookApp] The Jupyter Notebook is running at:
[I 18:25:00.815 NotebookApp] http://(localhost.localdomain or 127.0.0.1):8000/?token=f7d20e19f9abf2cd8323034c6a60e6bf0a3c30a98f866fbc
[I 18:25:00.815 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 18:25:00.833 NotebookApp]
To access the notebook, open this file in a browser:
file:///run/user/1001/jupyter/nbserver-8326-open.html
Or copy and paste one of these URLs:
http://(localhost.localdomain or 127.0.0.1):8000/?token=f7d20e19f9abf2cd8323034c6a60e6bf0a3c30a98f866fbc
^C[I 18:25:14.249 NotebookApp] interrupted
Serving notebooks from local directory: /home/python/PycharmProjects/test
0 active kernels
The Jupyter Notebook is running at:
http://(localhost.localdomain or 127.0.0.1):8000/?token=f7d20e19f9abf2cd8323034c6a60e6bf0a3c30a98f866fbc
Shutdown this notebook server (y/[n])? y
[C 18:25:16.200 NotebookApp] Shutdown confirmed
[I 18:25:16.210 NotebookApp] Shutting down 0 kernels
(venv) [python@localhost test]$