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 軟件包組    安裝軟件包組


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM