上一篇我们说了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