在ubuntu16.04中安裝pyenv和pipenv

因爲最近在做安全帽檢測的項目,下載的yolov4源碼使用的python3.6,但是實驗室服務器上的python是3.5,因爲某些原因不能更新實驗室的python3.5,所以打算pyenv和pipenv創建一個python3.6的虛擬環境。我的想法是通過pyenv管理多個版本的Python,然後在自己的項目中,設置該項目的python環境爲3.7(主環境是3.5,但是我需要3.7);使用pipenv創建3.7的虛擬環境(因爲如果要使用python3.7,就必須下載python3.7)

系統:ubuntu 16.04

python版本:python3.5

第一部分:安裝pyenv

1 pyenv

pyenv可以在多個python版本之間進行轉換。它允許你的ubuntu系統中存在多個python,使用pyenv可以在多個python版本之間輕鬆地進行轉換。轉換有兩層意思:

(1)使用pyenv改變當前系統的python版本:比如,目前ubuntu的python版本是python3.5,你可以在下載python3.6之後,將系統的python版本由3.5轉換成3.6。

(2)使用pyenv可以控制某個項目的python版本。比如,目前ubuntu中多個項目需要使用不同的python版本,有的項目使用python3.5,有的項目使用python3.6,你可以使用pyenv爲每個單獨的項目創建其合適的python版本,而且每個項目之間的python環境是相互獨立的。

2 安裝

項目源碼:https://github.com/pyenv/pyenv

(1)下載pyenv源碼

在這裏,我們從github中直接下載pyenv源碼,我們講源碼保存在~/.pyenv隱藏目錄下,你可以使用ctrl+h找到這個文件。

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

(2)定義一個PYENV_ROOT環境變量,讓其指向pyenv repo的下載地址,並且在你的$PATH中添加$PYENV_ROOT/bin,讓pyenv獲得命令行的使用權。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

(3)向你的shell中添加pyenv init

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

注意:如果在使用pyenv的過程中,出現了死循環,你你需要講~/.bashrc修改維~/.bash_profile

(4)重啓shell,讓修改之後的路徑生效

exec "$SHELL"

(5)安裝相關依賴

sudo apt-get update; sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

安裝相關依賴之後,你可以檢查一下自己的pyenv是否安裝了。

# (1) 檢查pyenv的安裝路徑
which pyenv

# /home/lupeng/.pyenv/bin/pyenv

# (2) 檢查pyenv的shim目錄
echo $PATH | grep --color=auto "$(pyenv root)/shims"

#/home/lupeng/.pyenv/shims:/home/lupeng/.pyenv/bin:/opt/ros/kinetic/bin:/home/lupen#g/bin:/home/lupeng/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/s#bin:/bin:/usr/games:/usr/local/games:/snap/bin

(6)安裝你需要的python及其對應的版本(假設我要安裝python3.7.7)

pyenv install 3.7.7
pyenv rehash

 (7) 如果下載python的網速太慢,可以參考下面的方式:

參考了這位老哥的博客


# 如果你要下自己需要的版本,請修改。
# 可以先去http://mirrors.sohu.com/python看看有沒有自己要的版本
export PYTHON_BUILD_MIRROR_URL="http://mirrors.sohu.com/python/2.7.12/"

pyenv install 3.7.7

3 卸載

如果你需要pyenv了,你可以卸載

rm -rf ~/.pyenv

4 切換Python版本

在這一部分,借鑑了這位老哥的博客

(1)改變整個系統的python版本(改變全局的python版本)

慎用!慎用!慎用!

重要的事情說三遍,因爲可能會有意想不到的事情發生

# (1) 將整個系統的python版本改變成python3.7.7
pyenv global 3.7.7

# (2)檢查一下pyenv的python版本
pyenv versions

# * system (set by /home/lupeng/.pyenv/version)
#  3.7.7


# (3) 使用python查看當前的python版本
python3

# Python 3.7.7 (default, Jun  2 2020, 15:09:34) 

(2)切換某個項目的python版本(改變局部的版本)

# (1) 切換到某個目錄下面
cd something/

# (2)切換到你需要的python版本
pyenv local 3.5.2


# (3) 檢查一下
pyenv versions

#   system
#* 3.5.2 (set by /home/lupeng/something/.python-version)
#  3.7.7
# 我們可以看到,pyenv一共下載了兩個版本,*表示當前的版本

 

第二部分:安裝pipenv

1 pipenv 

pipenv可以創建多個虛擬環境,虛擬環境之間和真實的python環境都是分別獨立的。這樣做有一個好處,每個項目之間依賴的模塊和環境都是獨立的,不會相互影響。比如在一個服務器中,多個人使用的模塊是不同的,如果要將整項目封裝成一個exe文件,顯然會封裝一些多餘的模塊,這顯然會增加exe文件的大小。

 

2 安裝

(1)安裝python和pip(如果安裝過了,請跳過;如果沒有安裝,請搜索相關博客下載安裝python和pip)

  • 你可以使用下面兩行代碼看看自己是否下載了python和pip
# (1) 查看python版本,如果報錯說明你沒有安裝python
python3 --version

# (2) 查看pip版本,如果報錯說明沒有安裝pip
pip3 --version

下載pip只需要下面兩行代碼就行(相關鏈接

# (1) 
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

# (2) 
python get-pip.py

(2)安裝pipenv

sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv

 

 3 創建虛擬環境

# (1) 創建一個項目工程(如果有,就忽略這一步)
mkdir myproject

# (2) 進入到項目工程路徑中
cd myproject

# (3) 創建你需要的python版本
pipenv --python 3.7.7

# (4) 修改pyenv在這個項目中的python版本
pyenv local 3.7.7

經過第三步之後,你會發現myproject工程項目下中會新增一個Pipfile文件

 

4 安裝相關模塊

大多數的模塊都是國外的,因此下載速度會慢很多,所以在安裝模塊之前,我們需要修改一下pipenv的鏡像源。打開Pipfile文件,將其修改成下面的格式:

[[source]]
 url = "https://pypi.tuna.tsinghua.edu.cn/simple"
 verify_ssl = true
 name = "pypi"

假設需要安裝numpy模塊

pipenv install numpy

 

5 運行你的py代碼

(1)首先進入到虛擬環境中

進入虛擬環境之前:

進入虛擬環境之後

我們發現在前面出現了(myproject),這是虛擬環境的名稱

 (2)運行py文件

假設在myproject工程目錄下面有一個hello.py的文件,我們想要運行這個py文件,我們可以這樣做

# 運行hello.py文件
python hello.py

(3) 退出虛擬環境

如果我們想要退出虛擬環境,我們可以使用exit退出

 

6 安裝requirements.txt中的安裝包

pipenv install -r requirements.txt

7 卸載pipenv

pip3 uninstall pipenv

8 其他命令

使用pipenv --help可以查看使用,下面我列舉了常用的命令:

參考了這位兄弟的博客:

# (1) 啓動pipenv shell(用於在終端運行)
pipenv shell

# (2) 退出虛擬環境
exit

# (3) 查看所有的安裝包
piplist

# (4) 環境內包的依賴展示
pipenv graph

# (5) 查看虛擬環境路徑
pipenv --venv

# (6) 卸載安裝包
pipenv uninstall 

 

 

第三部分:將pycharm和pipenv連用

參考了這位老哥的博客

(1)第一種情況:

如果使用pycharm新創建一個項目,在創建項目的時候,選擇使用pipenv

然後在設置中選擇interpreter,這時候我們就可以選擇3.7.7的版本加載Interpreter了

注意:

(1)一定要是Pipenv Environment,而不是Virtualenv Environments,只有通過pipenv安裝的模塊纔可以在pycharm中使用

(2)Base interpreter: /home/lupeng/.pyenv/versions/3.7.7/bin/python

(2)第二種情況:

如果是一個項目是移植過來的(比如從github下載下來的)的項目,我們只需要使用pyenv給這個項目設置一個局部的python環境,然後使用pipenv --python 3.7.7來創建一個虛擬環境就行(python版本視具體情況而定)

配置完環境之後,我們需要給項目文件添加一個interpreter。如下圖所示,點擊Ok就行。(勾掉 Install packages from Pipfile,這是因爲在我添加interpreter的時候,在安裝requirements.txt的時候,總是會報錯,我索性就先勾掉了)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章