linux下python多版本環(huán)境設(shè)置(數(shù)據(jù)科學(xué)研究依賴環(huán)境安裝)
經(jīng)常遇到這樣的情況:
系統(tǒng)自帶的Python是2.6涨共,自己需要Python 2.7中的某些特性概行;
系統(tǒng)自帶的Python是2.x驱显,自己需要Python 3.x腕够;
此時(shí)需要在系統(tǒng)中安裝多個(gè)Python衡瓶,但又不能影響系統(tǒng)自帶的Python,即需要實(shí)現(xiàn)Python的多版本共存末患。
pyenv就是這樣一個(gè)Python版本管理器研叫,除此之外,還可以使用virtualenv創(chuàng)建獨(dú)立的純凈虛擬環(huán)境
一璧针、pyenv安裝
使用vm虛擬機(jī)安裝centos7系統(tǒng)
1)默認(rèn)安裝方式使用NAT網(wǎng)絡(luò)連接方式 確認(rèn)IP后可以直接實(shí)現(xiàn)宿主機(jī)和虛擬機(jī)的互聯(lián)嚷炉,也能直接連接互聯(lián)網(wǎng)
2)在centos安裝配置界面中的軟件選擇界面,需要選擇帶有GHOME界面的配置探橱,否則安裝后的系統(tǒng)是不帶界面的申屹,使用不便
1.相關(guān)依賴軟件安裝
1)安裝GCC
yum install gcc
2)安裝git,需要用git獲取pyenv的代碼
yum -y install git
3)其他工具依賴
yum install -y readline readline-devel readline-static openssl openssl-devel openssl-static sqlite-devel bzip2-devel bzip2-libs
2.pyenv獲取及配置
1)獲取pyenv,安裝位置選擇在root根目錄下,使用.隱藏目錄走搁,并設(shè)置環(huán)境變量独柑。這里設(shè)置為root用戶可用了迈窟,其實(shí)可以基于其他用戶clone一份自己用的獨(dú)立環(huán)境
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
2)設(shè)置相關(guān)環(huán)境變量私植,使pyenv生效
echo 'export PYENV_ROOT="/root/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
二、pyenv的使用
1.安裝不同版本的python
pyenv install --list #查看可安裝的python版本
pyenv install 3.6.5 #安裝python3.6.5
pyenv uninstall 3.6.5 #卸載python3.6.5
補(bǔ)充:網(wǎng)絡(luò)問題導(dǎo)致安裝緩慢或無(wú)法進(jìn)行
如anaconda之類大容量的版本车酣,由于網(wǎng)絡(luò)的問題曲稼,總是連接中斷,安裝失敗湖员。此時(shí)可以先從官方網(wǎng)站下載安裝包贫悄,然后放在~/.pyenv/cache
文件中(注意cache是個(gè)文件),然后執(zhí)行pyenv install 此版本
娘摔,pyenv會(huì)自動(dòng)先從此文件夾中搜索
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz
cp Python-2.7.15.tar.xz ~/.pyenv/cache
pyenv install 2.7.15
2.更新pyenv
安裝完之后窄坦,需要更新一下才能看到已經(jīng)安裝的版本
pyenv rehash
pyenv versions #查看已經(jīng)安裝好的版本,帶*號(hào)的為當(dāng)前使用的版本
3.選擇版本
pyenv global 3.6.5 #設(shè)置全局版本,即系統(tǒng)使用的將是此版本
這樣在任意目錄下執(zhí)行python命令進(jìn)入的都是3.6.5環(huán)境
pyenv local 2.7.15 #當(dāng)前目錄下的使用版本鸭津,有點(diǎn)類似virtualenv
在當(dāng)前目錄下執(zhí)行 python 進(jìn)入的都是2.7.15環(huán)境
pyenv global system #重新設(shè)置全局版本為系統(tǒng)的版本
而除了root用戶(設(shè)置pyenv的用戶)外,其他用戶使用的仍是系統(tǒng)默認(rèn)的2.7.5版本的python
三彤侍、virtualenv安裝及使用
1.python virtualenv安裝
可以直接使用pip安裝virtualenv也行,但是通過pyenv插件的形式安裝virtualenv的虛擬環(huán)境更加方便逆趋。
git clone https://github.com/pyenv/pyenv-virtualenv.git
cd pyenv-virtualenv/
./install.sh
安裝virtualenv插件盏阶,安裝在主文件夾下的.pyenv文件夾中。
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
./install.sh
2.創(chuàng)建虛擬環(huán)境
創(chuàng)建一個(gè)2.7.15的虛擬環(huán)境
pyenv virtualenv 2.7.15 py27
source ~/.bash_profile #執(zhí)行這一步使當(dāng)前用戶環(huán)境都使用這個(gè)virtualenv環(huán)境
這條命令在本機(jī)上創(chuàng)建了一個(gè)名為env271的python虛擬環(huán)境闻书,這個(gè)環(huán)境的真實(shí)目錄位于:~/.pyenv/versions/
注意名斟,命令中的 ‘2.7.15’ 必須是一個(gè)安裝前面步驟已經(jīng)安裝好的python版本, 否則會(huì)出錯(cuò)魄眉。
可以通過pyenv versions
命令來(lái)查看當(dāng)前的虛擬環(huán)境砰盐,列表中有一個(gè) py27。
3.切換和使用新的python虛擬環(huán)境:
執(zhí)行以下命令
pyenv activate py27
就能切換為py27
這個(gè)版本的虛擬環(huán)境坑律。
通過輸入python --version
查看現(xiàn)在版本楞卡,可以發(fā)現(xiàn)處于虛擬環(huán)境下了。
如果要切換回系統(tǒng)環(huán)境脾歇, 運(yùn)行這個(gè)命令即可
pyenv deactivate
刪除這個(gè)虛擬環(huán)境,只要直接刪除它所在的目錄就好:
rm -rf ~/.pyenv/versions/py27/
或者使用卸載命令:
pyenv uninstall py27
四蒋腮、jupyter notebook 安裝
1.安裝數(shù)據(jù)科學(xué)依賴的軟件
yum install bzip2 -y
yum groupinstall "Development Tools" -y
2.使用pyenv進(jìn)入python3.6.5環(huán)境
在python3環(huán)境下實(shí)現(xiàn)數(shù)據(jù)科學(xué)的框架搭建
pyenv local 3.6.5
python --version
pip install ipython jupyter notebook
3.jupyter配置
jupyter安裝完成后,驗(yàn)證命令是否可用并生成一個(gè)jupyter的配置文件藕各。(確保pyenv環(huán)境正確)
jupyter notebook --generate-config
4.安全設(shè)置
為了比較安全的訪問服務(wù)器資源池摧,可以設(shè)置登錄密碼和設(shè)置https來(lái)實(shí)現(xiàn)安全登錄。有條件可以通過安全認(rèn)證中心來(lái)發(fā)放秘鑰和認(rèn)證激况。
首先打開ipython作彤,生成sha1的密碼,如下:
from notebook.auth import passwd
passwd()
#Enter password sunline
#output sha1:5862585fb33e:afeb36aa85d02e0c37b0de7d7e6a4bc766e9fa6c
然后生成一個(gè)自簽名認(rèn)證的key乌逐,如下:
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout jkey.key -out jcert.pem
最后修改增加配置文件中的內(nèi)容:
vim /home/user/.jupyter/jupyter_notebook_config.py
c.NotebookApp.password = 'sha1:<your-sha1-hash-value>'
c.NotebookApp.port = 8888
c.NotebookApp.ip = '192.168.245.128'
c.NotebookApp.open_browser = False
c.NotebookApp.certfile = '/home/user/jcert.pem'
c.NotebookApp.keyfile = '/home/user/jkey.key'
5.jupyter notebook使用
由于jupyter使用的8888作為默認(rèn)端口竭讳,需要把端口給開放并重啟防火墻。執(zhí)行如下命令
firewall-cmd --zone=public --add-port=8888/tcp --permanent
然后重啟防火墻
systemctl restart firewalld.service
到這里所有的安裝和基本的設(shè)置都已經(jīng)完成浙踢,直接在命令行輸入:jupyter notebook
.就可以啟動(dòng)進(jìn)程绢慢。
6.實(shí)現(xiàn)后臺(tái)運(yùn)行并輸出日志
創(chuàng)建start.sh
腳本內(nèi)容為
nohup start.sh >> output.log 2>&1 &
nohup /root/jupyterNotebook/start.sh >> /root/jupyterNotebook/output.log 2>&1 &