Linux下安装python3

编译安装python3

1.1安装python前的库环境,非常重要

yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

1.2下载python源码包

网址:https://www.python.org/downloads/release/python-362/

下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

1.3下载,解压安装源码包

1、configure

这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:

./configure --prefix=/usr

上面的意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。

同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 --with、--enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。

2、make

这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。

如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。

make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。

make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。

3、make install

这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)

wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz
xz -d Python-3.6.7.tar.xz
tar -xf Python-3.6.7.tar
#yum install gcc -y
.
/configure --prefix=/opt/python make && make install
---------------------
用python查看默认安装路径
>>> import sys
>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6',
'/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
--------------------
python3.4默认没添加path
在/etc/profile最后一行添加
export PATH=$PATH:/opt/python/bin
然后
source /etc/profile

#python快捷path就被改了,yum用的python2,麻烦
编译安装python3
1.切换opt目录(这是一个约定)
cd /opt 
2.下载python3的源代码
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
3.安装python前的库环境,非常重要
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

4.解压缩python3的源代码压缩文件
cd /opt/ 进入存在这个文件的目录
tar -xf Python-3.6.2.tgz 解压
5.cd Python-3.6.2/  进入源代码目录下,准备开始编译安装 
6.编译安装三部曲
第一曲:
cd Python-3.6.2/
#configure 这个脚本文件,只是为了释放makefile,用于指定python3安装到哪里
./configure    --prefix=/opt/python36  --with-ssl
        --prefix 这个参数用于指定python安装的路径
第二曲:
执行make开始编译python3.6的源代码
make

第三曲:
make install  生成/opt/python36

(第二曲和第三曲可以写成    make && make install)

7.配置环境变量
echo $PATH             #$PATH是有优先级顺序的
将/opt/python36/bin/放入环境变量,注意要添加到path的最前面
#变量的赋值只是临时有效
PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
#将这个参数,写入到Linux的全局变量配置文件中
vim /etc/profile     #打开这个全局变量文件,写入PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"到文件最后

8.退出(logout),重新加载全局变量.
9.which python3 确认是否正确安装
10.不要将系统默认的python 改成python3  这是一个大坑。
(因为Linux有很多工具,默认是用的python2,例如yum)


11.在Linux下安装django程序
pip3 install -i https://pypi.douban.com/simple django==1.11.16
pip3 install django==1.11.16
pip3 list

12.使用django命令创建项目
[root@localhost ~]# cd /opt
[root@localhost opt]# django-admin startproject mysite

13.修改mysite的settings.py中的ALLOWED_HOSTS
vim /opt/mysite/mysite/settings.py     #/查找
ALLOWED_HOSTS = ["*"]

14.启动项目
[root@localhost opt]# cd mysite/
[root@localhost mysite]# python3 manage.py runserver 0.0.0.0:9999

补充:
python3的管理工具是pip3 install flask
python2的是easy_install flask


[root@localhost ~]# python -V
Python 2.7.5
[root@localhost ~]# python --version
Python 2.7.5
[root@localhost ~]# python3 --version
Python 3.6.2
[root@localhost ~]# pip3 list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Django (1.11.16)
pip (9.0.1)
pytz (2019.2)
setuptools (28.8.0)
You are using pip version 9.0.1, however version 19.2.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[root@localhost ~]# 
编译安装python3

python Tab自动补全

下载setuptool 3.4以上已经默认安装了easy_install-3.4

下载地址:
https://pypi.python.org/pypi/setuptools/36.2.7
下载命令:
wget https://pypi.python.org/packages/07/a0/11d3d76df54b9701c0f7bf23ea9b00c61c5e14eb7962bb29aed866a5844e/setuptools-36.2.7.zip#md5=b9e6c049617bac0f9e908a41ab4a29ac
解压:
unzip setuptools-36.2.7.zip
编译:
python3 setup.py build
python2 setup.py build
无误后安装:
python3 setup.py install
python2 setup.py install
没什么用

下载readline

#yum install -y readline-devel -y 
#pip install readline
tab补全
#python startup file
import readline,rlcompleter
#tab completion
readline.parse_and_bind('tab:complete')
----------------------------
python历史记录
#history file
import os
history_file = os.path.join(os.environ["HOME"],".pythonhistory")
[root@mm_local ~]# echo "export PYTHONSTARTUP='/root/.pythonstartup'" >> /root/.bashrc   
[root@mm_local ~]# source /root/.bashrc  
[root@mm_local ~]# cat /root/.pythonstartup   
import os  
import readline  
import rlcompleter  
import atexit  
  
  
#tab completion  
readline.parse_and_bind("tab: complete")  

  
  
#history file  
history_file = os.path.join(os.environ["HOME"],".pythonhistory")  
try:  
    readline.read_history_file(history_file)  
except IOError:  
    pass  
atexit.register(readline.write_history_file,history_file)  
  
  
del os,history_file,readline,rlcompleter  
[root@mm_local ~]# python  
Python 2.7.3 (default, Jun  5 2013, 22:40:26)   
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2  
Type "help", "copyright", "credits" or "license" for more information.  
>>> import sys  
>>> sys.path<tab> #按tab键就可以自动补全了  
  
[root@mm_local ~]# python  
>>>  
>>> sys.path #按上下方向键即可找到历史命令 
整体代码

加入python的启动环境变量,永久生效自动补全

只需要启动时执行一条命令即可

import rlcompleter, readline
readline.parse_and_bind('tab:complete')
可以将上述的代码存于~/.pythonrc.py文件中。

然后,在~/.bashrc中设置

export PYTHONSTARTUP=~/.pythonrc.py
这样,每次启动终端,bash就会设置PYTHONSTARTUP这个环境变量,然后,python启动时就会使用这个变量指定的文件中的初始化代码。

在python解释器中,输入一个变量的一部分,或者变量后面加句点,再按TAB键就可以看到自动补全的威力。

Linux下安装程序的方法

  • rpm -ivh 包名.rpm  需要手动解决依赖关系
  • yum install 包名 -y          yum自动处理依赖关系
  • 编译安装(源码安装)

安装Lrzsz

#安装此软件,即可拖拽上传下载linux代码到windows
yum install lrzsz

软件包管理

软件包是什么?
软件包顾名思义就是将应用程序、配置文件和数据打包的产物,所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便,suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。

  • 在早期系统运维中,安装软件是一件非常费事费力的事情。系统管理员不得不下载软件源代码编译软件,并且为了系统做各种调整。
  • 尽管源代码编译形式的软件增强了用户定制的自由度,但是在小软件上耗费精力是缺乏效率的,于是软件包应运而生。
  • 软件包管理可以将管理员从无休止的兼容问题中释放。yum工具就可以自动搜索依赖关系,并执行安装。
程序(软件)组成部分:
    二进制程序  可执行命令
    库     .so文件
    配置文件    .conf
    帮助文件    readme    /usr/share/man

windows程序

如图

macos程序

 

mysql-5-3-4.rpm
redis-3-4-3.rpm
nginx2-3-2.rpm

RPM软件包管理器

  在 RPM(红帽软件包管理器)公布之前,要想在 Linux 系统中安装软件只能采取源码包 的方式安装。早期在 Linux 系统中安装程序是一件非常困难、耗费耐心的事情,而且大多数 的服务程序仅仅提供源代码,需要运维人员自行编译代码并解决许多的软件依赖关系,因此 要安装好一个服务程序,运维人员需要具备丰富知识、高超的技能,甚至良好的耐心。而且在 安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、 卸载、查询、升级等管理软件操作时难度都非常大。

RPM 机制则为解决这些问题而设计的。RPM 有点像 Windows 系统中的控制面板,会建 立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。

软件包管理器核心功能:

  • 1.制作软件包 .rpm
  • 2.安装、卸载、升级、查询、校验

实例

#现在要安装mysql
#下载地址
https://dev.mysql.com/downloads/mysql/
安装软件的命令格式                rpm -ivh filename.rpm     # i表示安装   v显示详细过程  h以进度条显示
升级软件的命令格式                rpm -Uvh filename.rpm
卸载软件的命令格式                rpm -e filename.rpm
查询软件描述信息的命令格式         rpm -qpi filename.rpm
列出软件文件信息的命令格式         rpm -qpl filename.rpm
查询文件属于哪个 RPM 的命令格式   rpm -qf filename

rpm安装软件

#下载软件包
wget https://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
#安装软件包
[root@yugo /tmp 11:03:42]#rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:lrzsz-0.12.20-36.el7 ################################# [100%]

rpm查询软件

rpm -q lrzsz  #查询lrzsz是否安装
rpm -qi lrzsz #查询lrzsz包的说明信息
rpm -ql lrzsz #查询lrzsz包生成的文件列表
rpm -qc nginx  #查询nginx安装生成后的配置文件路径
rpm -qf /etc/nginx/fastcgi.conf  #查看这个文件由哪个rpm包安装

rpm升级软件

rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;

rpm卸载软件

rpm -e PACKAGE_NAME
需要手动解决依赖
不如 yum remove

rpm的依赖问题,因此不太好用

其一,难以删除

[root@pyyuc /tmp 11:42:01]#rpm -e nginx
error: Failed dependencies:
    nginx is needed by (installed) nginx-mod-mail-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-perl-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-xslt-filter-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-image-filter-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-stream-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-geoip-1:1.12.2-2.el7.x86_64

其二,难以安装

[root@pyyuc /tmp 11:45:07]#rpm -ivh zsh-5.6.2-9.6.2.aarch64.rpm
warning: zsh-5.6.2-9.6.2.aarch64.rpm: Header V3 RSA/SHA256 Signature, key ID 3dbdc284: NOKEY
error: Failed dependencies:
    ld-linux-aarch64.so.1()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    ld-linux-aarch64.so.1(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libdl.so.2(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libm.so.6(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libncursesw.so.6()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libtinfo.so.6()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64

yum命令

yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

尽管 RPM 能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决, 而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。 Yum 软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum 软件仓库可以 根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安 装到系统。

Yum 软件仓库中的 RPM 软件包可以是由红帽官方发布的,也可以是第三方发布的,当 然也可以是自己编写的。

 

 

对比windows下的软件管理工具

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum(选项)(参数)
-h:显示帮助信息;
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。

实例

部分常用的命令包括:

自动搜索最快镜像插件    yum install yum-fastestmirror

yum源配置

什么是yum源?

    • Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
    • 说到yum源就必须说到linux系统中特有的依赖关系问题,yum就是为了解决依赖关系而存在的。yum源就相当是一个目录项,当我们使用yum机制安装软件时,若需要安装依赖软件,则yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。
    • YUM是“Yellow dog Updater, Modified”的缩写,是一个软件包管理器,YUM从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。
    • YUM的基本工作机制如下:
      服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。 
      客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

yum源的目录

#进入yum源目录
cd /etc/yum.repos.d/
#查看yum源文件
ls -l

配置阿里云yum源

1.好习惯,备份yum源
mkdir repo_bak
mv *.repo repo_bak/
2.下载阿里云repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
3.清空yum缓存并且生成新的yum缓存
yum clean all
yum makecache
4.安装软件扩展源
yum install -y epel-release
yum repolist all        列出所有仓库
yum list all            列出仓库所有软件包
yum info 软件包名            查看软件包信息
yum install 软件包名        安装软件包
yum reinstall 软件包名    重新安装软件包
yum update    软件包名        升级软件包
yum remove    软件包名        移除软件包
yum clean all            清楚所有仓库缓存
yum check-update        检查可以更新的软件包
yum grouplist            查看系统中已安装的软件包
yum groupinstall 软件包组    安装软件包组
posted @ 2019-09-25 01:07  silencio。  阅读(1963)  评论(0编辑  收藏  举报