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'
          
    • 安装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里添加模块搜索路径
    
  • 退出项目python虚拟环境

    命令:deactivate
    作用:停用虚拟环境
    

results matching ""

    No results matching ""