Python 3 学习笔记

人生苦短,我用 Python。

👉文章列表
Python 3 学习笔记 ⏬ 数字 数字的进制转换 集合 set 路径处理 sys.path 模块 使用 SimpleHttpServer 快速构建静态文件服务 包管理器 pip 的使用 virtualenv 的使用 CRC32 BeautifulSoup 使用指南 使用 BeautifulSoup 去除 HTML 中的注释 PyMySQL 使用指南 json 处理 yaml 处理 使用 getopt 库解析命令行参数 使用 argparse 库解析命令行参数 Jinja2 模板引擎

Python 3: virtualenv 的使用


virtualenv 可以创建一个独立的 Python 执行环境。

安装:

$ pip3 install virtualenv

安装好后,就可以在终端中使用 virtualenv 命令了。

查看安装的版本:

$ virtualenv --version
16.4.0

入门示例

创建新的执行环境:

$ mkdir py-project
$ cd py-project
$ virtualenv ENV
Using base prefix '/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/letian/Desktop/py-project/ENV/bin/python3.6
Also creating executable in /Users/letian/Desktop/py-project/ENV/bin/python
Installing setuptools, pip, wheel...
done.
$ ls
ENV

virtualenv ENV 命令会在当前目录创建ENV目录,在该目录中创建一个新的 Python 执行环境。

切换到ENV环境:

$ source ./ENV/bin/activate
(ENV) $ 

此时终端中的提示符号从$变成了(ENV) $

在新的执行环境中看下 Python 、pip 的位置和版本:

(ENV) $ which python
/Users/letian/Desktop/py-project/ENV/bin/python
(ENV) $ which pip
/Users/letian/Desktop/py-project/ENV/bin/pip
(ENV) $ python --version
Python 3.6.4

退出ENV环境:

两种方式:

  • 方式1:退出当前终端会话
  • 方式2:使用deactivate
(ENV) $ deactivate
$

第三方库的管理

上面的示例中我们创建了一个ENV的独立执行环境,它的第三方库和操作系统中的是隔离的。 比如,默认的 Python 环境安装了一个 requests 库,那么这个ENV环境里是没有这个库的。如果有需要,那么就单独安装:

(ENV) $ pip install requests

./ENV/lib/python3.6/site-packages 下可以找到安装的 requests 库。

我使用的macOS,我们看下sys.path的内容:

(ENV) $ python -c "import sys;print(sys.path)"
['', '/Users/letian/Desktop/py-project/ENV/lib/python36.zip', '/Users/letian/Desktop/py-project/ENV/lib/python3.6', '/Users/letian/Desktop/py-project/ENV/lib/python3.6/lib-dynload', '/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Users/letian/Desktop/py-project/ENV/lib/python3.6/site-packages']

如果想访问系统的第三方库,该怎么办?在创建运行环境的时候加上--system-site-packages参数就行。

我们现在操作系统 Python 环境安装 requests 库:

$ pip3 install requests

生成新的执行环境:

$ virtualenv --system-site-packages ENV2

我们看下能不能引用系统的第三方库:

$ source ./ENV2/bin/activate
(ENV2) $ python -c "import sys;print(sys.path)"
['', '/Users/letian/Desktop/py-project/ENV2/lib/python36.zip', '/Users/letian/Desktop/py-project/ENV2/lib/python3.6', '/Users/letian/Desktop/py-project/ENV2/lib/python3.6/lib-dynload', '/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Users/letian/Desktop/py-project/ENV2/lib/python3.6/site-packages', '/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
(ENV2) $ python
Python 3.6.4 (default, Jan  6 2018, 11:51:15)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests

sys.path 比之前多了一个'/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages',这个是操作系统级的Python第三方库存放位置。

注意,若使用 pip install requests --user 安装requests库,库的安装位置不是系统级的,而是在用户级别。此时使用--system-site-packages创建的独立Python环境,运行import requests会失败。

指定 Python 版本

virtualenv 是使用 pip3 安装的,所以默认创建的环境是 Python 3 的。如果现在系统中还安装了 Python 2,那么如何创建一个独立的 Python 2 执行环境呢? 答案是,创建环境时使用 -p 参数指定 python 执行文件。

$ virtualenv -p /usr/bin/python2.7 ENV27

( 本文完 )

文章目录