pythonlinux部署
一般linux系統都自帶python2,你是要裝python3?
給你centos下源碼安裝py3 的例子把。
如果已經安裝好了python34
sudo yum remove python34
編譯安裝
python官網只為Linux提供了源碼,因此我下載python3.6.1的源碼壓縮包
第一步,CentOS裝好openssl靜態庫
鍵入以下命令: yum install -y openssl-static
若未裝該靜態庫會導致python3自帶的pip3安裝失敗
第二步,編譯python3源碼
0. CentOS安裝GCC和wget yum install -y gcc,wget
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
1. 先解壓python3的源碼包 wget http://python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
2. 配置安裝路徑 cd Python-3.6.1 //進入python3源碼解壓後的文件夾
./configure --prefix=/usr/local/python3 //默認配置文件並設置安裝路徑
3. 編譯python3源碼 make
4. 安裝 make install
最終若無錯誤提示,說明安裝成功
5. 添加文件鏈接 安裝後鍵入命令?python3?提示不存在該命令,這是因為我們自定義了安裝目錄,因此需要添加文件鏈接,命令如下:
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
6. 測試 鍵入命令:
python3 -V
會輸出python3版本信息,說明python3安裝完成
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
㈡ python linux怎麼操作
1. os 模塊
1.1. os模塊的exec方法族
Python的exec系統方法同Unix的exec系統調用是一致的。這些方法適用
於在子進程中調用外部程序的情況,因為外部程序會替換當前進程的代碼,不會返回。( 這個看了點 help(os) --> search
"exec" 的相關介紹,但是沒太搞明白咋使用)
1.2. os模塊的system方法
system方法會創建子進程運行外部程序,方法只返回外部程序的運行結果。這個方法比較適用於外部程序沒有輸出結果的情況。
[python]
view plain
>>> import os
>>> os.system("echo \"Hello World\"") # 直接使用os.system調用一個echo命令
Hello World ——————> 列印命令結果
0 ——————> What's this ? 返回值?
>>> val = os.system("ls -al | grep \"log\" ") # 使用val接收返回值
-rw-r--r-- 1 root root 6030829 Dec 31 15:14 log ——————> 此時只列印了命令結果
>>> print val
0 ——————> 注意,此時命令正常運行時,返回值是0
>>> val = os.system("ls -al | grep \"log1\" ")
>>> print val
256 ——————> 使用os.system調用一個沒有返回結果的命令,返回值為256~
>>>
注意:上面說了,此方法脂肪會外部程序的結果,也就是os.system的結果,所以如果你想接收命令的返回值,接著向下看~
1.3. os模塊的popen方法
當需要得到外部程序的輸出結果時,本方法非常有用,返回一個類文件對象,調用該對象的read()或readlines()方法可以讀取輸出內容。比如使用urllib調用Web API時,需要對得到的數據進行處理。os.popen(cmd) 要得到命令的輸出內容,只需再調用下read()或readlines()等 如a=os.popen(cmd).read()
[python]
view plain
>>> os.popen('ls -lt') # 調用os.popen(cmd)並不能得到我們想要的結果
<open file 'ls -lt ', mode 'r' at 0xb7585ee8>
>>> print os.popen('ls -lt').read() # 調用read()方法可以得到命令的結果
total 6064
-rwxr-xr-x 1 long long 23 Jan 5 21:00 hello.sh
-rw-r--r-- 1 long long 147 Jan 5 20:26 Makefile
drwxr-xr-x 3 long long 4096 Jan 2 19:37 test
-rw-r--r-- 1 root root 6030829 Dec 31 15:14 log
drwxr-xr-x 2 long long 4096 Dec 28 09:36 pip_build_long
drwx------ 2 Debian-gdm Debian-gdm 4096 Dec 23 19:08 pulse-gylJ5EL24GU9
drwx------ 2 long long 4096 Jan 1 1970 orbit-long
>>> val = os.popen('ls -lt').read() # 使用變數可以接收命令返回值
>>> if "log" in val: # 我們可以使用in來判斷返回值中有木有一個字元串
... print "Haha,there is the log"
... else:
... print "No,not happy"
...
Haha,there is the log
2. commands 模塊
使用commands模塊的getoutput方法,這種方法同popend的區別在於popen返回的是一個類文件對象,而本方法將外部程序的輸出結果當作字元串返回,很多情況下用起來要更方便些。
主要方法:
* commands.getstatusoutput(cmd) 返回(status, output)
* commands.getoutput(cmd) 只返回輸出結果
* commands.getstatus(file) 返回ls -ld file的執行結果字元串,調用了getoutput,不建議使用此方法
[python]
view plain
long@zhouyl:/tmp/tests$ python
Python 2.7.3 (default, Jan 2 2013, 16:53:07)
[GCC 4.7.2] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> import commands
>>> commands.getstatusoutput('ls -lt') # 返回(status, output)
(0, 'total 5900\n-rwxr-xr-x 1 long long 23 Jan 5 21:34 hello.sh\n-rw-r--r-- 1 long long 147 Jan 5 21:34 Makefile\n-rw-r--r-- 1 long long 6030829 Jan 5 21:34 log')
>>> commands.getoutput('ls -lt') # 返回命令的輸出結果(貌似和Shell命令的輸出格式不同哈~)
'total 5900\n-rwxr-xr-x 1 long long 23 Jan 5 21:34 hello.sh\n-rw-r--r-- 1 long long 147 Jan 5 21:34 Makefile\n-rw-r--r-- 1 long long 6030829 Jan 5 21:34 log'
>>> commands.getstatus('log') # 調用commands.getoutput中的命令對'log'文件進行相同的操作
'-rw-r--r-- 1 long long 6030829 Jan 5 21:34 log'
>>>
3. subprocess模塊
根據Python官方文檔說明,subprocess模塊用於取代上面這些模塊。有一個用Python實現的並行ssh工具—mssh,代碼很簡短,不過很有意思,它在線程中調用subprocess啟動子進程來幹活。
[python]
view plain
>>> from subprocess import call
>>> call(["ls", "-l"])
subprocess與system相比的優勢是它更靈活(你可以得到標准輸出,標准錯誤,「真正」的狀態代碼,更好的錯誤處理,等..)。我認為使用os.system已過時,或即將過時。
㈢ 如何在linux下安裝python
1、linux下安裝python3
a、 准備編譯環境(環境如果不對的話,可能遇到各種問題,比如wget無法下載https鏈接的文件)
1
2
yum groupinstall 'Development Tools'
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel
2 下載 Python3.5代碼包
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz
在安裝包中有一個README的文件,裡面有寫如何安裝
tar Jxvf Python-3.5.0.tar.xz
cd Python-3.5.0
./configure --prefix=/usr/local/python3
make && make install
提示:Ignoring ensurepip failure: pip 7.1.2 requires SSL/TLS
這是原因沒有安裝或升級oenssl:
yum install openssl-devel
再次重復編譯方案python3.5:
最終如下:
提示同時成功安裝pip-7.12與setuptools!
pip3與pip都提示沒有錯誤!
做軟鏈:
ln -s /usr/local/python3/bin/pip3.5 /usr/local/bin/pip
升級pip到最新版本:
pip install --upgrade pip
pip安裝成功啦!
註:--no-check-certificate 表示安裝時「不檢查證書」,不加上可能無法安裝。
2.安裝包
requests包:
pip install requests
pyquery包:
pip install pyquery
pymysql包:
pip install pymysql
㈣ 學Python一定要Linux系統嗎
並不是說學Python一定要Linux系統,Windows系統也可以,只不過Linux更合適。
線上伺服器99%都是Linux系統,也就是說都是基於Linux系統的,比如centos,紅帽,ubuntu等Linux系統。為什麼會選擇Linux系統?大部分語言是穩定,可能Windows伺服器長時間運行會出現宕機,但是Linux系統是不會的,在Linux幾乎很少出現這種情況。Linux伺服器可以無休止運行,具有非常好的穩定性以及高效性,因為穩定的特性受到了眾多用戶喜歡,使用范圍廣闊,並且Linux還可以提供高可靠性的服務。
其次,大量的Linux開發都是基於Python。openstack私有雲,ansible自動化運維工具,fail2ban防暴力破解工具等都是基於Python語言開發的。所以要求Python開發人員對Linux有基本了解,伺服器工程流程需要熟悉。
㈤ linux安裝python環境
放到自己准備好的文件夾
2.解壓
命令: # tar -zxvf Python-3.8.5.tgz
解壓到准備好的文件內
3.進入解壓後的目錄,編譯安裝。
cd Python-3.8.5
./configure --prefix=/usr/local/python3
可能會See config.log' for more details出現See config.log' for more details錯誤,需要安裝gcc環境
命令: yum install -y gcc
4.安裝:
安裝依賴環境:
首先: sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
然後: make
最後: make install
完成 make install實際上是把生成的執行文件拷貝到之前configure命令指定的目錄/usr/local/python3下。
到這里安裝已經結束
5.創建軟鏈接
ln -s /usr/tools/Python3/bin/python3 /usr/tools/python3
6.加入環境變數:
vim /etc/profile
增加: export PATH=$PATH:/usr/tools/Python/bin
:wq 退出
source /etc/profile
總結:完成上面的步驟,就完成了python在linux環境的配置。基礎知識只能滿足你60%的學習需求,剩下的40%就要在實戰中補足,我要做的就是補充你剩下的40%。OK,這次分享就到這里了,有什麼疑問可以隨時留言溝通,互相學習進步!
歡迎加入QQ群:547349021
小提示:群名雖然叫selenium+unittest,但是我們不限任何測試領域的溝通交流和學習,讓我們一起補足缺失的40%吧!