前言:寫這篇文章的目的是因為自己用win10系統做python開發存在諸多限制,一些插件的安裝需要折騰很久,最近學習flask時用win10就遇到了插件無法安裝,去折騰費力不讨好,是以弄了個虛拟機裝ubuntu系統來開發。
為什麼安裝pyenv
Python 2和Python 3之間存在着較大的差異,并且由于各種原因導緻了Python 2和Python 3的長期共存。在實際工作過程中,我們可能會同時用到Python 2和Python 3,是以,也需要經常在Python 2和Python 3之間進行來回切換。這就需要對python的版本進行管理,除此之外還需要對不同的軟體包進行管理。大部分情況下,對于開源的庫我們使用最新版本即可。但是,有時候可能需要對相同的Python版本,在不同的項目中使用不同版本的軟體包。
在這裡,我們要使用兩個工具:pyenv和virtualenvwrapper。前者用于管理不同的Python版本,後者用于管理不同的工作環境。 有了這兩個工具,Python相關的版本問題将不再是問題。
在Ubuntu中安裝pyenv的依賴庫
百度了好多,都是教怎麼去安裝pyenv,怎麼去更改配置檔案,怎麼去通過pyenv去下載下傳python的版本,幾乎都是一模一樣的教程,跟着這樣的教程安裝了N次,ubuntu也重新弄了N次(保持系統在安裝pyenv成功之前沒有多餘東西,因為這是配置其他東西的第一步,強迫症,哈哈),也沒能成功的通過pyenv下載下傳下來python,後來才知道,安裝pyenv需要依賴的庫很多,我是通過安裝依賴庫之後就成功了!當然,最好下載下傳之前先弄一下圖上我圈起來的的部分,讓它自動選擇最佳鏡像,免得下載下傳的時候速度或者啥的掉鍊子

//執行以下指令安裝依賴庫
//更新源
sudo apt-get update
//更新軟體
sudo apt-get upgrade
sudo apt-get install make build-essential libssl-dev zlib1g-dev
sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl
sudo apt-get install llvm libncurses5-dev libncursesw5-dev
注意: 執行sudo apt-get update時可能發生以下錯誤:
在這裡插入圖檔描述
程序占用問題,解決方法:删掉lock(強制解鎖):
sudo rm /var/lib/dpkg/lock
sudo rm /var/cache/apt/archives/lock
安裝pyenv
pyenv是一個Python版本管理工具,它能夠進行全局的Python版本切換,也可以為單個項目提供對應的Python版本。使用pyenv以後,可以在伺服器上安裝多個不同的Python版本。不同Python版本之間的切換也非常簡單。pyenv官方位址https://github.com/pyenv/pyenv-installer。
- 通常來說,安裝一個開源程式需要自己編譯和下載下傳相關依賴包,但是作者提供個一個簡易的安裝器,隻需要一條指令即可搞定安裝。
curl https://pyenv.run | bash
- pyenv.run重定向到github内的安裝腳本,上面這句指令等同于
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
- 配置環境變量,将安裝路徑寫入~/.bashrc:
//将以下三條語句寫入 ~/.bashrc
vim .bashrc
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
- 配置立刻生效:
source ~/.bashrc
- 如果路徑第一個結尾是shims則表示成功
echo $PATH
/home/python/.pyenv/plugins/pyenv-virtualenv/shims:/home/python/.pyenv/shims:
/home/python/.pyenv/bin:/home/python/bin:/home/python/.local/bin:/usr/local/sbin:
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
- 如果想更新pyenv:
pyenv update
- 如果想解除安裝pyenv(pyenv安裝的預設路徑為~/.pyenv,如果自定義安裝路徑則删除自定義檔案夾):
rm -fr ~/.pyenv
- 并删除.bashrc下面的環境變量:
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
使用pyenv
- 1.檢視pyenv目前支援哪些Python版本
- 2.列出pyenv中所有可用的python版本
pyenv versions
- 3.選擇指定的python版本
pyenv global 3.7.3
//檢視版本
python
切換Python版本以後,與版本相關的依賴也會一起切換。是以,我們不用擔心不同的版本在系統中是否會互相幹擾。
- 4.删除指定python版本
pyenv uninstall 3.7.3
remove /home/python/.pyenv/versions/3.7.3? y
//列出删除3.7.3後,pyenv中所有可用的python版本
pyenv versions
- 5.在pyenv中安裝python
在安裝python之前,我們必須要安裝python所需要的依賴包,這個必須要安裝:
#1安裝python所需要的依賴包
sudo apt-get install libc6-dev gcc
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
#2. 安裝python
#---------------第一種方式---------------
pyenv install 3.7.3 -v #-v 以日志模式顯示安裝過程
#因為pyenv會自動到github上下載下傳,速度超慢,是以一般會選擇使用curl或者wget下載下傳到~/.pyenv/cache下,
#然後再用pyenv安裝,推薦使用第一種方式。下面是可選的安裝模式。
#---------------第二種方式---------------
cd ~/.pyenv
sudo mkdir cache
wget -c http://mirrors.sohu.com/python/3.7.3/Python-3.7.3.tar.xz -P ~/.pyenv/cache/
pyenv install 3.7.3 -v
#3.更新pyenv資料庫
pyenv rehash
#4.列出所安裝的python版本
pyenv versions
#5.切換python版本
pyenv global 3.7.3
#6.驗證版本
python
注意:
使用pyenv管理python,必須是用pyenv安裝的python才行,系統以前有的,需要重新用pyenv安裝
使用pip安裝第三方子產品時會安裝到~/.pyenv/versions/xxx下,不會和系統子產品發生沖突;
使用pip安裝子產品後,可能需要執行pyenv rehash更新資料庫。
下一篇:python web開發筆記–python虛拟環境 virtualenvwrapper