virtualenv的安装
一般我们使用的Python第三方包都会被安装在site-packages目录下,但是很多时候我们需要为我们的项目提供一个独立的Python环境,这时候virtualenv出现了。它的作用就是隔离我们每个应用的Python环境,使他们互不影响。
Python 2.7.10
Mac 默认版本是Python 2.7.10,说是说默认安装了pip,但是使用pip命令却没有找到,说明根本没有安装,还是需要自己去官网下载。
安装pip
因为2.7没有自带pip,所以要去官网下载get-pip.py文件,然后用python命令安装执行
- 下载地址
也可以通过curl命令下载
命令:curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
执行get-pip.py文件后就可以了
命令:sudo python get-pip.py
- 注意前面一定要加sudo,不然会报错(报错内容如下)
Exception: Traceback (most recent call last): File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/commands/install.py", line 342, in run prefix=options.prefix_path, File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/req/req_set.py", line 784, in install **kwargs File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/req/req_install.py", line 851, in install self.move_wheel_files(self.source_dir, root=root, prefix=prefix) File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/req/req_install.py", line 1064, in move_wheel_files isolated=self.isolated, File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/wheel.py", line 345, in move_wheel_files clobber(source, lib_dir, True) File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/wheel.py", line 316, in clobber ensure_dir(destdir) File "/var/folders/pn/bzrjljhx71x6pyzpx3d492tr0000gn/T/tmpsrIFVP/pip.zip/pip/utils/__init__.py", line 83, in ensure_dir os.makedirs(path) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs mkdir(name, mode) OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/pip'
- 注意前面一定要加sudo,不然会报错(报错内容如下)
安装virtualenv
命令:sudo pip virtualenv
- 注意因为2.7版本是系统自带的,所以个人觉得在执行命令的时候每次都要加sudo,不然会报错
Python 3.6.0
这是我电脑里的另一个Python版本,默认是安装了pip的
pip3 --version
查看pip版本,3是属于python版本,因为pip是内嵌在python3版本中的
安装virtualenv
- 命令:pip3 virtualenv
virtualenv的使用
经过上面一轮下来virtualenv已经装好进我们的系统了
可以发现,即使我们为Python 2.7.10版本装好pip命令,如果之前执行过命令:pip3 virtualenv
你后面又执行命令:sudo pip virtualenv,其实都是同样的,重复性的操作。
查看版本
命令:virtualenv --version
为我们的项目创建独立的Python环境
1.首先先cd进入到我们的项目的根目录下(如果没有项目的话自己先创建一个文件夹试试水) 2.执行命令:virtualenv --no-site-packages venv 命令解析: virtualenv:virtualenv创建一个python环境 venv:新建的Python环境被放到当前目录下的venv目录 --no-site-packages:表示已经安装到系统Python环境中的所有第三方包都不会复制过来, 我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
指定python版本创建虚拟环境
virtualenv -p /usr/bin/python UserBlog_venv2.7
进入环境
在进入环境的前提是先进入项目的根路径,然后在进入Python独立环境
命令:source venv/bin/activate
进入后:
(venv) liumaopingdeMacBook-Pro:PythonProject pocket$
可以看到命令提示符变了
进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
这一步叫做激活虚拟环境,以后的命令都在虚拟环境里做就好了。
在环境中利用pip安装第三方包
- 找一个第三方(PIL)练手
PIL:是Python下非常强大的处理图像的工具库
执行安装命令:pip install PIL 发现报错如下: Collecting PIL Could not find a version that satisfies the requirement PIL (from versions: ) No matching distribution found for PIL
不要慌张,是这个PIL的问题,现在都用Pillow替代它了
pip install Pillow 显示如下表示成功: Successfully built olefile Installing collected packages: olefile, Pillow Successfully installed Pillow-4.3.0 olefile-0.44
# 使用Pillow库,因为PIL已经很早停用了,Pillow是fork版本进行维护更新的,所以用法一样 from PIL import Image # 导入库 im = Image.open('test1.png') # 传入一张图片的路径,返回图片信息 print (im.format, im.size, im.mode) ''' 正常结果 ('PNG', (280, 442), 'RGBA') 如果出现如下错误结果: ModuleNotFoundError: No module named 'PIL' 意思就是解析器没有找到所谓的PIL模块 不过我们明明安装成功了对吧,所以要相信自己没有错,代码也没有错。 错误原因:运行的环境错了 '''
- 运行的注意事项(引用报错解释)
由于我们是用virtualenv创建的单独的python虚拟环境,所以用pip在虚拟环境中安装的第三方库也仅仅是安装在了虚拟环境中的site-packages文件夹里,与系统的python下的site-packages文件夹无关,如果不在项目的当前虚拟环境下执行.py文件,而是直接选择在系统下执行,如果系统下的site-packages文件夹里没有对应的第三方库,肯定是会报错。如果你们的电脑和我的一样,也是含有多个版本的python,则更需要注意一点,每个版本的python都有其对应的一个site-packagesw文件夹,用什么python版本运行.py文件,如果报第三方库找不到,第一时间我们应该去对应的site-packagesw文件夹找,如果虚拟环境也报错,则去对应的项目里的虚拟环境目录下的lib文件夹->python->site-packagesw文件夹里找对应的第三方是否存在,不存在则需要去安装。
- pip也是有版本的
查看版本(默认是系统的python):pip --version 如果像我还安装了python3.6.0版本的:pip3 --version 自带python版本安装库(比如:pillow):sudo pip install pillow python3.6.0版本安装库(比如:pillow):pip3 install pillow 虚拟环境安装则先进入虚拟环境在执行相应指令即可。
- 查看模块路径以及动态添加模块路径搜索
项目的所有模块路径都可以被查询
import sys print (sys.path) # 打印Python解释器当前目录、所有已安装的内置模块和第三方模块 ''' 作用:告诉python解析器你不仅要去默认的目录搜索模块,还要去我指定的路径搜索模块 比如:我没有用pip安装pillow,直接去网上下载的pillow包放在桌面这时候引用它并运行肯定报错 因为python解析器不知道引用的包在哪里,这是我们动态添加如下命令就好了,运行就不会报错。需要注意得是动态添加的只是在当前运行环境有效,退出运行后就失效了,我觉得这样设计挺好的。 当然硬是要永久有效,则需要在环境变量PYTHONPATH中添加相应路径。 ''' sys.path.append('/Users/pocket/Desktop') # 动态的往path里添加模块搜索路径
- 找一个第三方(PIL)练手
退出项目python虚拟环境
命令:deactivate 作用:停用虚拟环境