Python-虛擬環(huán)境說(shuō)明

上一篇我們說(shuō)了python虛擬環(huán)境的安裝, 這一篇我們就來(lái)介紹一下這個(gè)虛擬環(huán)境. 下面舉例是在Mac系統(tǒng)下:

在我們虛擬環(huán)境安裝成功之后, 我們進(jìn)入終端查看

xxzxdeMacBook-Pro:Code xxzx$ cd ~/
xxzxdeMacBook-Pro:~ xxzx$ ls -a
.           .gitbook        .sogouinput
..          .gitconfig      .ssh
.CFUserTextEncoding .gitflow_export     .viminfo
.DS_Store       .gitignore_global   .virtualenvs
.ShadowsocksX-NG    .hgignore_global    Applications
.Trash          .ipython        Desktop
.bash_history       .itmstransporter    Documents
.bash_profile       .kingsoft       Downloads
.bash_profile.pysave    .mysql_history      Library
.bash_sessions      .netrc          Movies
.bashrc         .node-gyp       Music
.cocoapods      .npm            Pictures
.codeintel      .npmrc          Public
.config         .oracle_jre_usage   bin
.cups           .pyenv          test2
.gem            .python_history     workspaces
.gemrc          .rediscli_history
xxzxdeMacBook-Pro:~ xxzx$ 

我們可以看到, 在當(dāng)前文件夾下有個(gè) . virtualenvs 的文件夾, 這個(gè)文件夾是隱藏文件夾. 我們通過(guò)ls -a命令列出包含隱藏文件的內(nèi)容 , 我們接著進(jìn)入到這個(gè)文件夾下查看

xxzxdeMacBook-Pro:~ xxzx$ cd .virtualenvs/
xxzxdeMacBook-Pro:.virtualenvs xxzx$ ls
Code            postmkvirtualenv    test10
ENV2.7          postrmvirtualenv    test11
Flask_py2       preactivate     test2
get_env_details     predeactivate       test5
initialize      premkproject        test6
postactivate        premkvirtualenv     test7
postdeactivate      prermvirtualenv     test8
postmkproject       syf_py3         test9
xxzxdeMacBook-Pro:.virtualenvs xxzx$ 

這里面的內(nèi)容就是我們通過(guò)mkvirtualenv xxx創(chuàng)建得到的, 會(huì)自動(dòng)幫我們創(chuàng)建名稱(chēng)為xxx的文件夾, 這時(shí)候我們隨便找一個(gè)文件夾進(jìn)入查看

xxzxdeMacBook-Pro:.virtualenvs xxzx$ cd Flask_py2/
xxzxdeMacBook-Pro:Flask_py2 xxzx$ ls
bin         lib
include         pip-selfcheck.json

我們看到有個(gè)bin的文件夾, 這個(gè)里面放的都是可執(zhí)行的二進(jìn)制文件. 我們可以看下:

xxzxdeMacBook-Pro:Flask_py2 xxzx$ cd bin/
xxzxdeMacBook-Pro:bin xxzx$ ls
activate        pip         python
activate.csh        pip3            python-config
activate.fish       pip3.6          python3
activate_this.py    postactivate        python3.6
easy_install        postdeactivate      wheel
easy_install-3.6    preactivate
get_env_details     predeactivate
xxzxdeMacBook-Pro:bin xxzx$ 

我們可以看到這里面有一些我們熟悉的python3 ,pip3. 我們?cè)诮K端敲python3 ..的時(shí)候用的就是這些python解釋器.

xxzxdeMacBook-Pro:bin xxzx$ workon 
Code       Flask_py2  test10     test2      test6      test8      
ENV2.7     syf_py3    test11     test5      test7      test9      
xxzxdeMacBook-Pro:bin xxzx$ workon Flask_py2
(Flask_py2) xxzxdeMacBook-Pro:bin xxzx$ python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

上面我們使用workon+tab+tab命令查看當(dāng)前有哪些虛擬環(huán)境, 當(dāng)我們使用workon+<虛擬環(huán)境名>進(jìn)入到這個(gè)虛擬環(huán)境中的時(shí)候. 當(dāng)前我們無(wú)論在哪個(gè)文件夾. 都是使用的 當(dāng)前這個(gè)虛擬環(huán)境下的命令. 所以虛擬環(huán)境就是通過(guò)這種方式進(jìn)行隔離安裝包的.

這個(gè)時(shí)候我們回到上層目錄

>>> ^D
(Flask_py2) xxzxdeMacBook-Pro:bin xxzx$ cd ..
(Flask_py2) xxzxdeMacBook-Pro:Flask_py2 xxzx$ ls
bin         lib
include         pip-selfcheck.json
(Flask_py2) xxzxdeMacBook-Pro:Flask_py2 xxzx$ 

我們可以看到當(dāng)前還有一個(gè)lib文件夾. 我們進(jìn)入到這個(gè)文件夾查看

(Flask_py2) xxzxdeMacBook-Pro:Flask_py2 xxzx$ cd lib/
(Flask_py2) xxzxdeMacBook-Pro:lib xxzx$ ls
python3.6
(Flask_py2) xxzxdeMacBook-Pro:lib xxzx$ cd python3.6/
(Flask_py2) xxzxdeMacBook-Pro:python3.6 xxzx$ ls
__future__.py           linecache.py
__pycache__         locale.py
_bootlocale.py          no-global-site-packages.txt
_collections_abc.py     ntpath.py
_dummy_thread.py        operator.py
_weakrefset.py          orig-prefix.txt
abc.py              os.py
base64.py           posixpath.py
bisect.py           random.py
codecs.py           re.py
collections         readline.so
config-3.6m-darwin      reprlib.py
copy.py             rlcompleter.py
copyreg.py          shutil.py
distutils           site-packages
encodings           site.py
enum.py             sre_compile.py
fnmatch.py          sre_constants.py
functools.py            sre_parse.py
genericpath.py          stat.py
hashlib.py          struct.py
heapq.py            tarfile.py
hmac.py             tempfile.py
imp.py              token.py
importlib           tokenize.py
io.py               types.py
keyword.py          warnings.py
lib-dynload         weakref.py
(Flask_py2) xxzxdeMacBook-Pro:python3.6 xxzx$ cd site-packages/
(Flask_py2) xxzxdeMacBook-Pro:site-packages xxzx$ ls
__pycache__         setuptools
easy_install.py         setuptools-40.6.2.dist-info
pip             wheel
pip-18.1.dist-info      wheel-0.32.3.dist-info
pkg_resources
(Flask_py2) xxzxdeMacBook-Pro:site-packages xxzx$ 

最后我們進(jìn)入到site-packages這個(gè)目錄下. 簡(jiǎn)單看一下

(Flask_py2) xxzxdeMacBook-Pro:site-packages xxzx$ pip install flask==0.10.1
Collecting flask==0.10.1
  Downloading https://files.pythonhosted.org/packages/db/9c/149ba60c47d107f85fe52564133348458f093dd5e6b57a5b60ab9ac517bb/Flask-0.10.1.tar.gz (544kB)
    100% |████████████████████████████████| 552kB 1.2MB/s 
Collecting Werkzeug>=0.7 (from flask==0.10.1)
  Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
    100% |████████████████████████████████| 327kB 1.1MB/s 
Collecting Jinja2>=2.4 (from flask==0.10.1)
  Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB)
    100% |████████████████████████████████| 133kB 1.3MB/s 
Collecting itsdangerous>=0.21 (from flask==0.10.1)
  Using cached https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask==0.10.1)
  Downloading https://files.pythonhosted.org/packages/da/fc/2979c425ad23d528d6ac2e1f3efdc28e572fa1e1fbd5a75171cbdd7ddaa5/MarkupSafe-1.1.0-cp36-cp36m-macosx_10_6_intel.whl
Building wheels for collected packages: flask
  Running setup.py bdist_wheel for flask ... done
  Stored in directory: /Users/xxzx/Library/Caches/pip/wheels/e1/f2/be/1c4f307a41aad7e632f79c0242a2714ecde24b663da3519665
Successfully built flask
Installing collected packages: Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask
Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 flask-0.10.1 itsdangerous-1.1.0
(Flask_py2) xxzxdeMacBook-Pro:site-packages xxzx$ ls
Flask-0.10.1.dist-info      markupsafe
Jinja2-2.10.dist-info       pip
MarkupSafe-1.1.0.dist-info  pip-18.1.dist-info
Werkzeug-0.14.1.dist-info   pkg_resources
__pycache__         setuptools
easy_install.py         setuptools-40.6.2.dist-info
flask               werkzeug
itsdangerous            wheel
itsdangerous-1.1.0.dist-info    wheel-0.32.3.dist-info
jinja2
(Flask_py2) xxzxdeMacBook-Pro:site-packages xxzx$ 

上面的命令是在當(dāng)前的虛擬環(huán)境中安裝了flask == 0.10.1版本. 我們?cè)俨榭? 有沒(méi)有發(fā)現(xiàn)比之前的多了一個(gè)flask文件夾. 這個(gè)就是我們flask的安裝包內(nèi)容.

通過(guò)上面的查看過(guò)程. 我們可以了解到虛擬環(huán)境的隔離過(guò)程. 所以我們虛擬環(huán)境不同, 對(duì)應(yīng)的安裝工具包就隔離了.

注意

如果我們?cè)谶@個(gè)虛擬環(huán)境中使用了sudo pip install這樣的命令. 會(huì)默認(rèn)安裝到系統(tǒng)下面, 而不會(huì)安裝到我們這個(gè)虛擬環(huán)境中

查看當(dāng)前虛擬環(huán)境的安裝包

我們可以通過(guò)pip list, pip freeze查看當(dāng)前虛擬環(huán)境的依賴安裝包

(Flask_py2) xxzxdeMacBook-Pro:flask xxzx$ pip list
Package      Version
------------ -------
Flask        0.10.1 
itsdangerous 1.1.0  
Jinja2       2.10   
MarkupSafe   1.1.0  
pip          18.1   
setuptools   40.6.2 
Werkzeug     0.14.1 
wheel        0.32.3 
(Flask_py2) xxzxdeMacBook-Pro:flask xxzx$ pip freeze
Flask==0.10.1
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
Werkzeug==0.14.1

安裝依賴包(須在虛擬環(huán)境中): 依賴就是開(kāi)發(fā)以及程序運(yùn)行需要使用的環(huán)境的集合谆膳。包括軟件却盘、插件等。我們一般會(huì)把需要使用的依賴給保存在一個(gè)文件中忿偷,命名為requirements的txt文件国瓮。如果在其它環(huán)境中要運(yùn)行我們的項(xiàng)目糕簿,直接通過(guò)指令可以一次性安裝所有依賴屈扎。

安裝依賴包(須在虛擬環(huán)境中):

$ pip install -r requirements.txt

生成依賴包(須在虛擬環(huán)境中):

$ pip freeze > requirements.txt

在ipython中測(cè)試安裝是否成功

$ from flask import Flask

我們也可以指定重定向的位置

(Flask_py2) xxzxdeMacBook-Pro:flask xxzx$ pip freeze > ~/Desktop/requirements.txt
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子害捕,更是在濱河造成了極大的恐慌绿淋,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尝盼,死亡現(xiàn)場(chǎng)離奇詭異吞滞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)东涡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)冯吓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人疮跑,你說(shuō)我怎么就攤上這事组贺。” “怎么了祖娘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵失尖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我渐苏,道長(zhǎng)掀潮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任琼富,我火速辦了婚禮仪吧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞠眉。我一直安慰自己薯鼠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布械蹋。 她就那樣靜靜地躺著出皇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哗戈。 梳的紋絲不亂的頭發(fā)上郊艘,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音唯咬,去河邊找鬼纱注。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胆胰,可吹牛的內(nèi)容都是我干的奈附。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼煮剧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起勉盅,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤佑颇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后草娜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挑胸,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年宰闰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茬贵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡移袍,死狀恐怖解藻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情葡盗,我是刑警寧澤螟左,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站觅够,受9級(jí)特大地震影響胶背,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喘先,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一钳吟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窘拯,春花似錦红且、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至砂轻,卻和暖如春奔誓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搔涝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工厨喂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庄呈。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓蜕煌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诬留。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斜纪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容