天天看點

關于python虛拟環境virtualenv

第一次自己去想用虛拟環境virtualenv.各種搜,如何使用

virtualenv可以搭建虛拟且獨立的python環境,可以使每個項目環境與其他項目獨立開來,保持環境的幹淨,解決包沖突問題。

一、安裝virtualenv

    virtualenv實際上是一個python包,是以我們可以用easy_install或者pip安裝。下面介紹在CentOS系統上的安裝方法。

    easy_install安裝方式:

1 2

[[email protected] ~]

# yum install python-setuptools python-devel

[[email protected] ~]

# easy_install virtualenv

    pip安裝方式:

1 2

[[email protected] ~]

# easy_install pip

[[email protected] ~]

# pip install virtualenv

    yum安裝方式(epel源):

1

[[email protected] ~]

# yum install python-virtualenv

二、建立python虛拟環境

    使用virtualenv指令建立python虛拟環境:virtualenv [虛拟環境名稱]。

1 2 3

[[email protected] ~]

# virtualenv env1

New python executable 

in

env1

/bin/python

Installing setuptools, pip...

done

.

    執行後,在本地會生成一個與虛拟環境同名的檔案夾。

    如果你的系統裡安裝有不同版本的python,可以使用–python參數指定虛拟環境的python版本:

1 2 3 4 5

[[email protected] ~]

# virtualenv --python=/usr/local/python-2.7.8/bin/python2.7 env1

Running virtualenv with interpreter 

/usr/local/python-2

.7.8

/bin/python2

.7

New python executable 

in

env1

/bin/python2

.7

Also creating executable 

in

env1

/bin/python

Installing setuptools, pip...

done

.

    實測預設情況下虛拟環境不會依賴系統環境的global site-packages。比如系統環境裡安裝了MySQLdb子產品,在虛拟環境裡import MySQLdb會提示ImportError。如果想依賴系統環境的第三方軟體包,可以使用參數–system-site-packages。此外,也可使用virtualenvwrapper的toggleglobalsitepackages指令控制目前環境是否使用global site-packages。

1 2 3

[[email protected] ~]

# virtualenv --system-site-packages env1

New python executable 

in

env1

/bin/python

Installing setuptools, pip...

done

.

三、啟動虛拟環境

    進入虛拟環境目錄,啟動虛拟環境,如下:

1 2 3 4

[[email protected] ~]

# cd env1/

[[email protected] env1]

# source bin/activate

(env1)[[email protected] env1]

# python -V

Python 2.7.8

    此時指令行前面會多出一個括号,括号裡為虛拟環境的名稱。以後easy_install或者pip安裝的所有子產品都會安裝到該虛拟環境目錄裡。

四、退出虛拟環境

    退出虛拟環境:deactivate

1 2

(env1)[[email protected] env1]

# deactivate

[[email protected] env1]

#

以上是COPY。。。

當自己簡單用虛拟環境啟動時,發現竟然無法import MySQLdb 百度得知(其實上面也有說明)無法通路globle-packages。又從上面得知,可以在建立的時候先--globle-site-packages...

暫時不知道還有什麼方法能實作。