1. 程式人生 > 其它 >centos 指定檔案路徑 指令碼_centos下搭建python雙版本環境

centos 指定檔案路徑 指令碼_centos下搭建python雙版本環境

技術標籤:centos 指定檔案路徑 指令碼

e90fe49af21222ff94f3aba334bc06ff.png

centos下搭建python雙版本環境

centos7自帶有python,版本是python2.7。但是在生產環境中,往往可能需要更高的python版本,甚至是有需要雙版本python同時使用的情況。接下來我們手動安裝python3,並且配置後可以並存使用。

一、安裝python3

1、理清自帶python位置

[[email protected] ~]# whereis python
python: /usr/bin/python2.7 /usr/bin/python /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz

由此得知我們的python在 /usr/bin目錄中

[[email protected] ~]# cd /usr/bin/
[[email protected] bin]# ll python*
lrwxrwxrwx. 1 root root    7 2月   7 09:30 python -> python2
lrwxrwxrwx. 1 root root    9 2月   7 09:30 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 8月   4 2017 python2.7

可以看到,python指向的是python2,python2指向的是python2.7,因此我們可以裝個python3,然後將python指向python3,然後python2指向python2.7,那麼兩個版本的python就能共存了。

2、更新用於下載編譯python3的相關包

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

執行此命令即可更新

3、安裝pip

yum -y install epel-release
yum install python-pip

執行以上兩個命令安裝pip

4、用pip安裝wget

pip install wget

執行上述命令安裝wget

5、用wget下載python3的原始碼包

wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz

執行上述命令,即可下載python3的tar.xz的原始碼包

6、編譯python3原始碼包

# 先對tar.xz包解壓
xz -d Python-3.6.4.tar.xz
tar -xf Python-3.6.4.tar

# 然後先進入到解壓後的目錄中,依次執行下面命令進行手動編譯
cd Python-3.6.4
./configure prefix=/usr/local/python3
make && make install

# 如果出現can't decompress data; zlib not available這個錯誤,則需要安裝相關庫,如果正常,則不必執行下面的命令。
#安裝依賴zlib、zlib-devel
yum install zlib zlib
yum install zlib zlib-devel

如果最後沒提示出錯,就代表正確安裝了,在/usr/local/目錄下就會有python3目錄

7、新增軟連結

#將原來的連結備份
mv /usr/bin/python /usr/bin/python.bak

#新增python3的軟連結
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

#測試是否安裝成功了
python -V

8、更改yum配置

更改yum配置,因為其要用到python2才能執行,否則會導致yum不能正常使用

vi /usr/bin/yum
把#! /usr/bin/python修改為#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down
把#! /usr/bin/python 修改為#! /usr/bin/python2

9、使用python雙版本

[[email protected] ~]# python2
Python 2.7.5 (default, Jun 20 2019, 20:27:34) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
[[email protected] ~]# python
Python 3.6.4 (default, Sep 27 2019, 16:54:08) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

至此,python雙版本已經都可以正常使用了。

二、建立虛擬環境

一般在生產環境中,我們不會直接使用系統的python環境,因為這樣各種依賴包存在很難管理的情況,因此,使用虛擬環境就會好很多,每一個具體的專案,我們可以使用一個單獨的虛擬環境,這樣各環境之間獨立使用,依賴互不影響。

1、使用virtualenv

安裝

pip install virtualenv

為一個工程建立一個虛擬環境

$ cd my_project_dir
$ virtualenv venv  # venv為虛擬環境目錄名,目錄名自定義

virtualenv venv 將會在當前的目錄中建立一個資料夾,包含了Python可執行檔案,以及 pip 庫的一份拷貝,這樣就能安裝其他包了。虛擬環境的名字(此例中是 venv )可以是任意的;若省略名字將會把檔案均放在當前目錄。在任何你執行命令的目錄中,這會建立Python的拷貝,並將之放在叫做 venv 的檔案中。

你可以選擇使用一個Python直譯器:

$ virtualenv -p /usr/bin/python2.7 venv    # -p引數指定Python直譯器程式路徑

這將會使用 /usr/bin/python2.7 中的Python直譯器。

開始使用虛擬環境

$ source venv/bin/activate # 啟用

從現在起,任何你使用pip安裝的包將會放在 venv 資料夾中,與全域性安裝的Python隔絕開。

像平常一樣安裝包,比如:

pip install requests

退出使用虛擬環境

如果你在虛擬環境中暫時完成了工作,則可以停用它:

$ . venv/bin/deactivate

這將會回到系統預設的Python直譯器,包括已安裝的庫也會回到預設的。

要刪除一個虛擬環境,只需刪除它的資料夾。(執行 rm -rf venv )。

這裡virtualenv 有些不便,因為virtual的啟動、停止指令碼都在特定資料夾,可能一段時間後,你可能會有很多個虛擬環境散落在系統各處,你可能忘記它們的名字或者位置。

2、使用virtualenvwrapper

鑑於virtualenv不便於對虛擬環境集中管理,所以推薦直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虛擬環境工作變得便利。它把你所有的虛擬環境都放在一個地方。

安裝

linux安裝virtualenvwrapper(確保virtualenv已安裝)

pip install virtualenvwrapper

配置

安裝完成後,在~/.bashrc寫入以下內容

export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh
  • 第一行:virtualenvwrapper存放虛擬環境的目錄
  • 第二行:virtrualenvwrapper會安裝到python的bin目錄下,所以該路徑是python安裝目錄下bin/virtualenvwrapper.sh
source ~/.bashrc # 讀入配置檔案,立即生效

可能存在的問題

  • 問題1
/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/bin/python and that PATH is
set properly.
  • 問題2
[[email protected] ~]# source .bashrc
-bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory
  • 解決方法
    • 問題1

在~/.bashrc寫入以下內容python export VIRTUALENVWRAPPER_PYTHON=/usr/local/python36/bin/python3 # 指定虛擬使用的python直譯器路徑

    • 問題2

virtualenvwrapper.sh找不到報錯,找到後拷貝到/usr/local/bin/下
然後執行source ~/.bashrc 

開始使用

  • 建立虛擬環境
mkvirtualenv venv # venv為虛擬環境的名字,自定義

這樣會在WORKON_HOME變數指定的目錄下新建名為venv的虛擬環境。若想指定python版本,可通過"--python"指定python直譯器

mkvirtualenv --python=/usr/local/python3.5.3/bin/python venv
  • 檢視當前的虛擬環境目錄
[[email protected] ~]# workon
  • 切換到虛擬環境
[[email protected] ~]# workon py3
(py3) [[email protected] ~]#
  • 退出虛擬環境
(py3) [[email protected] ~]# deactivate
[[email protected] ~]#
  • 刪除虛擬環境
rmvirtualenv venv