Python-虚拟环境说明

上一篇我们说了python虚拟环境的安装, 这一篇我们就来介绍一下这个虚拟环境. 下面举例是在Mac系统下:

在我们虚拟环境安装成功之后, 我们进入终端查看

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$ 

我们可以看到, 在当前文件夹下有个 . virtualenvs 的文件夹, 这个文件夹是隐藏文件夹. 我们通过ls -a命令列出包含隐藏文件的内容 , 我们接着进入到这个文件夹下查看

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$ 

这里面的内容就是我们通过mkvirtualenv xxx创建得到的, 会自动帮我们创建名称为xxx的文件夹, 这时候我们随便找一个文件夹进入查看

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

我们看到有个bin的文件夹, 这个里面放的都是可执行的二进制文件. 我们可以看下:

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. 我们在终端敲python3 ..的时候用的就是这些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命令查看当前有哪些虚拟环境, 当我们使用workon+<虚拟环境名>进入到这个虚拟环境中的时候. 当前我们无论在哪个文件夹. 都是使用的 当前这个虚拟环境下的命令. 所以虚拟环境就是通过这种方式进行隔离安装包的.

这个时候我们回到上层目录

>>> ^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$ 

我们可以看到当前还有一个lib文件夹. 我们进入到这个文件夹查看

(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$ 

最后我们进入到site-packages这个目录下. 简单看一下

(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$ 

上面的命令是在当前的虚拟环境中安装了flask == 0.10.1版本. 我们再查看. 有没有发现比之前的多了一个flask文件夹. 这个就是我们flask的安装包内容.

通过上面的查看过程. 我们可以了解到虚拟环境的隔离过程. 所以我们虚拟环境不同, 对应的安装工具包就隔离了.

注意

如果我们在这个虚拟环境中使用了sudo pip install这样的命令. 会默认安装到系统下面, 而不会安装到我们这个虚拟环境中

查看当前虚拟环境的安装包

我们可以通过pip list, pip freeze查看当前虚拟环境的依赖安装包

(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

安装依赖包(须在虚拟环境中): 依赖就是开发以及程序运行需要使用的环境的集合。包括软件、插件等。我们一般会把需要使用的依赖给保存在一个文件中,命名为requirements的txt文件。如果在其它环境中要运行我们的项目,直接通过指令可以一次性安装所有依赖。

安装依赖包(须在虚拟环境中):

$ pip install -r requirements.txt

生成依赖包(须在虚拟环境中):

$ pip freeze > requirements.txt

在ipython中测试安装是否成功

$ from flask import Flask

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

(Flask_py2) xxzxdeMacBook-Pro:flask xxzx$ pip freeze > ~/Desktop/requirements.txt
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容