这是一篇旧文,编写于2017年,用于公司内部交流。整理更新后于2019年04月06日重发,内容有效期乐观估计半年,阅读请注意保质期。
为什么用python虚拟环境
python版本差异
python当前主要有2个release版本 Python 2.7.16 和 Python 3.7.3 ,这两个版本在一些语法上存在较大差异。
如果你从网上下载了一段python代码,却运行不起来,首先要排除的是python版本问题。比如下面这个 hello_python.py ,代码非常简单,就一句打印 hello,world 到屏幕上。
print "hello,world"
复制代码
如果你使用python2.7,恭喜你可以很好的跑起来,如下:
(python27) ➜ python hello_python.py
hello,world
复制代码
如果你使用的是python3,可能就实现从入门到放弃:(
(python37) ➜ python hello_python.py
File "hello_python.py", line 3
print "hello,world"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("hello,world")?
复制代码python3 中让代码正常运行的办法和提示一样,修改语句为 print("hello,world")
python2.7已经 “过时”,pip运行是会提示:
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.复制代码
现实状况却是一些库的版本问题或者历史遗留问题,可能需要在python2和python3之间切换。
python使用场景差异
python语言应用非常广泛,涉及服务器脚本、爬虫、程序开发、科学计算,大数据,机器学习等。不同的场景下,使用的库是有差异:
使用场景
常用库
程序开发
flask/django
爬虫
requests/beautifulsoup4/scrapy
科学计算
pandas/numpy/matplotlib
...
...
库又会依赖另外的库,这样如果全部安装在一个环境里,难以规避库的版本冲突。
鉴于python版本差异和使用场景差异,推荐使用虚拟环境进行隔离管理,省事不少。
怎么使用虚拟环境
使用 pip
使用虚拟环境之前,我们先花一点点时间来了解python的包安装工具 pip , 相信我这很简单。
Python的最大的优势之一是丰富的库,跨平台,在UNIX,Windows和Macintosh兼容很好。
安装这些库,让开发速度飚起来,就需要使用 pip。
下面使用pip安装requests库示例:
(py27studio) ➜ pytest pip install requests
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting requests
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f1/ca/10332a30cb25b627192b4ea272c351bce3ca1091e541245cccbace6051d8/requests-2.20.0-py2.py3-none-any.whl (60kB)
100% |████████████████████████████████| 61kB 1.5MB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting urllib3<1.25,>=1.21.1 (from requests)
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/62/00/ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e/urllib3-1.24.1-py2.py3-none-any.whl (118kB)
100% |████████████████████████████████| 122kB 1.5MB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/56/9d/1d02dd80bc4cd955f98980f28c5ee2200e1209292d5f9e9cc8d030d18655/certifi-2018.10.15-py2.py3-none-any.whl (146kB)
100% |████████████████████████████████| 153kB 287kB/s
Collecting idna<2.8,>=2.5 (from requests)</