超級(jí)實(shí)用的Python環(huán)境搭建以及神器推薦!抓緊時(shí)間收藏
今天給大家講一下如何搭建一個(gè)舒適的 Python 環(huán)境,包括本地環(huán)境和遠(yuǎn)程調(diào)試環(huán)境,然后再附送給大家兩套好用的 Python Web 框架。在這個(gè)過(guò)程中,還穿插著介紹一些適合于初學(xué)者的神器,希望大家中意~
1 安裝 Python
***步,當(dāng)然是安裝 Python 啦。
1.1 Mac 系統(tǒng)
Mac 系統(tǒng)默認(rèn)是安裝了 Python2.7 的。我們?nèi)绾瘟硗獍惭b一個(gè) Python3 呢?
首先,推薦你安裝神器 HomeBrew 作為命令行下的管理軟件。
HomeBrew 的安裝方法:
- ruby -e "$(wget -O- https://raw.github.com/Homebrew/linuxbrew/go/install)"
安裝完畢后使用 brew help命令即可查看brew的各種用法啦。
現(xiàn)在我們只要使用這條命令: brew install python3,即能輕松安裝上 python3 了。
然后我們使用 brew info python2或者 brew info python3就能查看 Python 2/3 的具體信息,媽媽再也不用擔(dān)心我找不到 Python 的位置了!
***,使用 brew list可以查看目前所有通過(guò) brew 安裝的命令行工具,其它的用法就通過(guò) brew help自行查閱吧。
1.2 Ubuntu 系統(tǒng)
Ubuntu 系統(tǒng)使用的是則默認(rèn)的包管理工具 apt 。使用如下命令即可安裝 python :
- apt install python2 #安裝python2
- apt install python3 #安裝python3
然后,在 Ubuntu 下有兩點(diǎn)是需要注意的。
一個(gè)是 Python 的定位,我們用 whereis 命令來(lái)查看其所在的文件夾:
- whereis python
另一個(gè)是 Pip 的安裝——Pip 是 Python 的包管理插件。
首先安裝 setuptools :
- wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
- tar -zxvf setuptools-19.6.tar.gz
- cd setuptools-19.6
- python3 setup.py build
- python3 setup.py install
然后給 Python3 安裝 pip:
- wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
- tar -zxvf pip-8.0.2.tar.gz
- cd pip-8.0.2
- python3 setup.py build
- python3 setup.py install
然后輸入 pip3,如果有正常返回,那么大功告成!
1.3 Python2/3 輕松分離
有時(shí)候我們只想使用 Python3,但是 Python2 會(huì)干擾到,那么怎么解決呢?
很簡(jiǎn)單,在要用 Python3 的時(shí)候不是輸入 Python 而是輸入 Python3,在使用 Python3 的 pip 的時(shí)候不是輸入 pip 而是輸入 pip3。
例如,給 Python3 安裝 Flask :
- pip3 install Flask
2 Pycharm 神器管理本地環(huán)境
然后,當(dāng)當(dāng),就是我們第二個(gè)神器登場(chǎng)啦,就是大名鼎鼎的 Pycharm 代碼編輯器。
https://www.jetbrains.com/pycharm/
Pycharm 分為社區(qū)版(免費(fèi))和專業(yè)版(付費(fèi)),二者***的區(qū)別就是付費(fèi)版本的 Pycharm 支持遠(yuǎn)程調(diào)試。
2.1 創(chuàng)建新項(xiàng)目
我們來(lái)創(chuàng)建一個(gè)新項(xiàng)目。
主要的參數(shù)有兩個(gè),一個(gè)是 Location ,項(xiàng)目的地址。
第二個(gè)是 Project Interpreter 項(xiàng)目解釋器,也就是你要使用哪個(gè) Python 。如果選擇 New environment using 呢,就是新建一個(gè)虛擬環(huán)境,和本機(jī)安裝的 Python 互不干擾。如果選擇 Existing Interpreter,則是使用本機(jī)的現(xiàn)有環(huán)境。
如果本機(jī)安裝的 Python 沒(méi)顯示怎么辦?那么點(diǎn)擊***邊的省略號(hào),選擇 System Interpreter,再點(diǎn)擊一次省略號(hào),就能添加了。
然后我們找到 Python 的所在位置,添加即可。如何找到 Python 位置?請(qǐng)見***部分。
2.2 改變已有項(xiàng)目的環(huán)境
如果一開始配置錯(cuò)了,那么該怎么辦呢?
點(diǎn)擊 Pycharm > Preference > Project > Project Interpreter設(shè)置即可。
2.3 Pycharm 中包的安裝
在 Pycharm 中,安裝 Python 的包有兩種方法,一種方法是在剛才的 Project Interpreter 界面里,使用加減號(hào)進(jìn)行包的安裝與卸載。
在安裝一兩個(gè)包的情況下,這種方法是一種簡(jiǎn)便的方法。那么如果是很多的包呢?這種時(shí)候我們就要用到 pip 了。
一般而言,github 中規(guī)范的 python 源碼會(huì)提供一個(gè)叫 requirements.txt 的文檔,文檔里記錄的是要安裝的包的名稱以及版本。
然后我們打開 Pycharm 里的終端窗口:
只要到 requirements.txt 所在的目錄下,使用 pip3 install-r requirements.txt命令,就能在當(dāng)前的 python 環(huán)境中導(dǎo)入所有需要的包啦,很方便。
那么,我們?cè)谧鲰?xiàng)目的時(shí)候,如何生成 requirements.txt 以供自己和他人使用呢?同樣是一行命令就能搞定的事: pip freeze>requirements.txt。
怎么樣,你 get 了嗎?
3 Pycharm 輕松實(shí)現(xiàn)遠(yuǎn)程調(diào)試
某些時(shí)候,我們會(huì)涉及到在服務(wù)器上運(yùn)行 Python 程序,那么我們就需要對(duì) Pycharm 做一些配置。
注意,只有 Pycharm Pro 支持遠(yuǎn)程調(diào)試。
3.1 配置遠(yuǎn)程連接
首先,假定我們手頭有一臺(tái)服務(wù)器,并有服務(wù)器的賬號(hào)和密碼。
然后打開Tools > Deployment > Configuration > new
如下內(nèi)容是要我們填寫的:
- SFTP host:服務(wù)器地址
- Port:端口,默認(rèn)22,一般不用改它。
- Root path:在服務(wù)器上的路徑。
- User name:服務(wù)器上的用戶名
- Password:服務(wù)器上的密碼
再點(diǎn)擊Mapping:
- Local path:映射到服務(wù)器上對(duì)應(yīng)位置的本機(jī)地址
- Deploy path:服務(wù)器上的文件夾位置。Root path + Deploy path 就是服務(wù)器上我們文件所在的完整路徑。
配置完成后,點(diǎn)擊Tools > Browse Remote Host,右側(cè)出現(xiàn)我們服務(wù)器上的文件,就說(shuō)明遠(yuǎn)程連接成功了!
添加遠(yuǎn)程 Python 解釋器
接下來(lái)我們添加遠(yuǎn)程 Python 解釋器,就能在本地「遙控」遠(yuǎn)程的服務(wù)器執(zhí)行我們的 Python 程序了。
點(diǎn)擊 Pycharm > Preference > Project > Project Interpreter > SSH Interpreter
輸入 地址、用戶名、密碼三件套。
Alright,試著在服務(wù)器上運(yùn)行 Hello World 吧!
4 Python Web 環(huán)境搭建
這里是本文的重頭戲了——如何用 Python 在服務(wù)器上搭建一個(gè)網(wǎng)站。
這里推薦 Python-Flask + Nginx + Gunicorn +Supervisor + Sqlite 的方案,因?yàn)檫@幾個(gè)軟件都對(duì)新手非常友好。其中 Python-Flask 是后端核心,Nginx 是前端服務(wù)器,Gunicorn 是后端服務(wù)器,Supervisor 是進(jìn)程監(jiān)控軟件,Sqlite 是輕型數(shù)據(jù)庫(kù)。
4.1 配置 Python-Flask 框架
首先,我們 git clone一個(gè)Python框架。
無(wú)數(shù)據(jù)庫(kù)的 Flask 框架:
https://github.com/albertschr/MixinEOSPlayer/tree/master/Python/FlaskSketchNosql
有數(shù)據(jù)庫(kù)的 Flask 框架:
https://github.com/albertschr/MixinEOSPlayer/tree/master/Python/Flask_Sketch
然后先在服務(wù)器上安裝必要的 Python 包:
- pip install -r requirements.txt
接著測(cè)試一下框架是否能正常運(yùn)行:
- python3 run.py

如果顯示`Running on http://127.0.0.1:5000 表示框架運(yùn)行正常。
4.2 安裝 Nginx、Gunicorn 與 Supervisor
在服務(wù)器上運(yùn)行:
- apt install nginx
- pip3 install gunicorn
- apt install supervisor
4.3 修改 nginx 的配置文件
nginx 的配置文件在 /etc/nginx/sites-available 目錄下,default 文件。
- server {
- listen 80;
- listen [::]:80;
- server_name example.com;
- root /home/git;
- index index.html;
- location / {
- try_files $uri $uri/ =404;
- }
- }
我們要做以下兩件事:
- 修改 root 為我們前端文件所在的目錄。
- 在 location 中添加一行 expires-1;,以讓頁(yè)面能即時(shí)刷新。
4.4 配置 supervisor
在你喜歡的目錄下生成 supervisor.conf 文件:
- echo_supervisord_conf > supervisor.conf # 生成 supervisor 默認(rèn)配置文件
打開配置文件:
- nano supervisor.conf
在底部添加:
- [program: [項(xiàng)目名稱] ]
- command=gunicorn -w4 -b0.0.0.0:1234 run:app ; supervisor啟動(dòng)命令,文件叫run.py,run.py里面執(zhí)行的類叫app。
- directory=[項(xiàng)目目錄](méi) ; 項(xiàng)目的文件夾路徑
- startsecs=0 ; 啟動(dòng)時(shí)間
- stopwaitsecs=0 ; 終止等待時(shí)間
- autostart=false ; 是否自動(dòng)啟動(dòng)
- autorestart = true ; 程序異常退出后自動(dòng)重啟
- startretries = 3 ; 啟動(dòng)失敗自動(dòng)重試次數(shù),默認(rèn)是 3
- stdout_logfile=[日志目錄](méi)/gunicorn.log
- stderr_logfile=[日志目錄](méi)/gunicorn.err
把上面的項(xiàng)目名稱、項(xiàng)目目錄、日志目錄改成自己的即可。
4.5 修改run.py
把 run.py 從本地運(yùn)行改為服務(wù)器上運(yùn)行。
把 app.run那行注釋掉,添加以下代碼:
- if __name__ == '_main_':
- app.run(host="0.0.0.0",debug=True)
- #無(wú)需填寫端口,因?yàn)間unicorn中已經(jīng)填了
萬(wàn)事Okay。執(zhí)行下面命令,你的后端服務(wù)器就運(yùn)行起來(lái)啦!
- supervisorctl -c supervisor.conf reload
- supervisorctl -c supervisor.conf start all
4.6 supervisor 的用法
- supervisord -c supervisor.conf 通過(guò)配置文件啟動(dòng)supervisor
- supervisorctl -c supervisor.conf status 察看supervisor的狀態(tài)
- supervisorctl -c supervisor.conf reload 重新載入 配置文件
- supervisorctl -c supervisor.conf start [all]|[appname] 啟動(dòng)指定/所有 supervisor管理的程序進(jìn)程
- supervisorctl -c supervisor.conf stop [all]|[appname] 關(guān)閉指定/所有 supervisor管理的程序進(jìn)程
4.7 supervisor 的小 bug
有時(shí)候,因?yàn)榉?wù)器重啟等原因 supervisor會(huì)出現(xiàn)一個(gè) error :
- error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 228
這時(shí)候,運(yùn)行以下兩個(gè)命令:
- sudo supervisord -c /etc/supervisor/supervisord.conf
- sudo supervisorctl -c /etc/supervisor/supervisord.conf
再執(zhí)行:
- supervisorctl -c supervisor.conf reload
就能解決。
5 總結(jié)
搭建 Python 環(huán)境對(duì)于初學(xué)者來(lái)說(shuō),有時(shí)候還挺費(fèi)勁。因此,我把 Python 環(huán)境搭建中的五項(xiàng)基礎(chǔ)技能集成在這一篇文章里啦:
- 如何安裝 Python
- 如何安裝及使用 Pip
- Pycharm 本地怎么配置
- Pycharm 如何配置遠(yuǎn)程調(diào)試環(huán)境
- 怎么在服務(wù)器上搭一個(gè)以 Python 為后端核心的網(wǎng)站
希望能對(duì)大家有所幫助!