Pip & Virtualenv & Fabric & Scrapy & PIL & BeautifulSoup

来源:互联网 发布:山下智久退出news 知乎 编辑:程序博客网 时间:2024/04/29 02:55
  • 下载一个IDE–Pycharm,自带环境管理,就不需要这么麻烦了…


  • 部分转载自:廖雪峰的官方网站

  • Mac OS X安装 Scrapy、PIL、BeautifulSoup

pip、virtualenv、fabric

  • 这三个对Python项目部署非常便利。
  • virtualenv 用来建立一个虚拟的python环境,一个专属于项目的python环境。用virtualenv 来保持一个干净的环境非常有用。
  • pip 用来解决项目依赖问题。将项目所有依赖的第三方库写在一个requirements.txt 中用pip 批量安装。一般和virtualenv 配合使用,将所有包安装在virtualenv 的环境中。
  • fabric 用来自动化远程部署项目,非常的方便。可以根据需要在本地、远程依次执行一系列shell 命令、程序等。比如从代码库更新代码,执行数据迁移脚本,重启服务进程,完成自动化的部署。

pip

  • pip 是一个安装和管理 Python 包的工具 , 是 easy_install 的一个替换品。本文将详细说明 安装 pip 的方法和 使用 pip 的一些基本操作如安装、更新和卸载 python 包。
  • distribute是setuptools的取代(Setuptools包后期不再维护了),pip是easy_install的取代。
  • pip的安装需要setuptools 或者 distribute,如果你使用的是Python3.x那么就只能使用distribute因为Python3.x不支持setuptools。

Windows下安装pip

  • 下载地址:https://pypi.python.org/pypi/pip
  • 下载源码那个文件
  • cmd进解压文件夹,输入python setup.py install
  • 添加环境变量C:\Python27\Scripts;
  • 安装一些Python的包,比如Tornado这个web框架:在cmd命令行直接输 pip install tornado
  • 或者直接可以在添加环境变量后用easy_install pip
  • 其实Python安装后就已经自带pip安装工具了,不用安装
  • 在环境变量里添加C:\Python27\Scripts;C:\Python34\Scripts;
  • 最后一定要加上那个分号
  • 如果不行的话,直接进pip的文件夹,pip install …

命令

  • 安装特定版本的package,通过使用==, >=, <=, >, <来指定一个版本号。
  • pip install ‘Markdown<2.0’
  • pip install ‘Markdown>2.0,<2.0.3’
  • 升级包到当前最新的版本,可以使用-U 或者 –upgrade
  • pip install -U Markdown
  • 卸载包
  • pip uninstall Markdown
  • 查询包
  • pip search “multiprocessing”
  • 列出安装的packages
  • $ pip freeze
  • 更新pip
  • pip install –upgrade pip
  • 显示当前已经安装的Package
  • $ pip list

新版本的pip可能有问题

  • 可以换回旧的版本
  • Python现在都自带pip,不用自己安装

error:Microsoft Visual C++ 9.0 is required

  • 彻底解决 error: Unable to find vcvarsall.bat
    1. windows上做Python开发,搭环境还真不比Linux容易。error: Unable to find vcvarsall.bat这个错误眼熟吧?
  • 凡是安装和操作系统底层密切相关的Python扩展,几乎都会遇到这个错误。比如PIL, Pillow(两个图形库),greenlet以及其基础之上的eventlet, gevent微线程并发库等等。当然了有一些情况下,你不必彻底解决它,你可以选择windows版本,那么也就只能使用阉割版功能
  • PIL有windows版,即使安装上了,64位Python一定报错 The _imaging C module is not installed, 除非自己重新编译安装。此外与CPU位数可能有关系,仅个人猜测。本人两个机器都是Win7旗舰版64位,安装的32位Python,其中一个CPU是64位的也遇到这个错误,32位的CPU则不报错。
  • 为了解决64位CPU报错,于是安装Pillow的windows版,确实能正常使用,不再报错。但是图片效果极不理想,图片里面用到font就悲剧,出个验证码的图片都难以辨认。
  • greenlet也可以安装windows版,有可能报错加载动态链接库失败,比如”ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。“不幸我也遇到了。
    1. 去下载安装VS2010(08版貌似也行,不过没必要用旧版,指不定哪个库又无法编译),给个地址(百度的云盘 国内应该速度可以)
  • http://pan.baidu.com/share/link?shareid=1609273194&uk=3255422755
  • 然后注意这一步很重要:命令行下执行 SET VS90COMNTOOLS=%VS100COMNTOOLS%
  • 如果你安装的是 2012 版 SET VS90COMNTOOLS=%VS110COMNTOOLS%
  • 如果你安装的是 2013版 SET VS90COMNTOOLS=%VS120COMNTOOLS%
  • 或者更暴力,直接配置系统环境变量 VS90COMNTOOLS指向 %VS你的版本COMNTOOLS%
  • 你还可以更暴力,在“..python安装路径…\Lib\distutils目录下有个msvc9compiler.py找到243行
  • toolskey = “VS%0.f0COMNTOOLS” % version 直接改为 toolskey = “VS你的版本COMNTOOLS”(这个就是为什么要配 ”VS90COMNTOOLS“ 的原因,因为人家文件名都告诉你了是 Microsoft vc 9的compiler, 代码都写死了要vc9的comntools,就要找这个玩意儿,找不到不干活)
  • 这么做的理由是Python2。7 扩展包是可以用08版或者更高的VS编译的,其setup.py(安装脚本)都是去windows系统寻找08版的VS,所以设置VS90的path
  • 如果Python版本小于2.7,强烈建议使用 VS08版,用2010或者更高可能部分扩展不好使。给个例子:
  • http://stackoverflow.com/questions/6551724/how-do-i-point-easy-install-to-vcvarsall-bat 这个例子说明 VS2010不适合Python2.6
  • 3.安装VS后该重启的重启,clean一下之前安装Python扩展失败的残留文件,然后 直接下载 pil pillow greenlet eventlet等源码,解压后python setup.py build发现都可以编译了。接下来就换成 python setup.py install安装吧。
  • 下面是MinGW的方法
  • 首先安装MinGW,在MinGW的安装目录下找到bin的文件夹,找到mingw32-make.exe,复制一份更名为make.exe;
  • 把MinGW的路径添加到环境变量path中,比如我把MinGW安装到D:\MinGW\中,就把D:\MinGW\bin添加到path中;
  • 打开命令行窗口,在命令行窗口中进入到要安装代码的目录下;
  • 输入如下命令就可以安装了。
  • setup.py install build –compiler=mingw32
  • 最简单的方法
  • 去这个网站
  • 下载lxml的文件,解压到当前文件夹
  • 复制到Python27\Lib

virtualenv

  • 以下部分是Python 2.7 的旧版本教程
  • virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
    1. 在没有权限的情况下安装新套件
    1. 不同应用可以使用不同的套件版本
    1. 套件升级不影响其他应用
  • 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的Lib/site-packages目录下
  • 如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?
  • 这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

安装virtualenv

  • pip install virtualenv
    然后,假定我们要开发一个新的项目,需要一套独立的Python运行环境,可以这么做:

第一步,创建目录:

  • $ mkdir myproject
  • $ cd myproject/

第二步,创建一个独立的Python运行环境,命名为venv:

  • $ virtualenv –no-site-packages venv
  • Using base prefix ‘/usr/local/…/Python.framework/Versions/3.4’
  • New python executable in venv/bin/python3.4
  • Also creating executable in venv/bin/python
  • Installing setuptools, pip, wheel…done.
  • 命令virtualenv就可以创建一个独立的Python运行环境,我们还加上了参数–no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
  • 新建的Python环境被放到当前目录下的venv目录。有了venv这个Python环境,可以用source进入该环境:
  • $ source venv/bin/activate
  • 注意到命令提示符变了,有个(venv)前缀,表示当前环境是一个名为venv的Python环境。
  • 下面正常安装各种第三方包,并运行python命令:
  • (venv)Mac:myproject michael$ pip install jinja2
  • Successfully installed jinja2-2.7.3 markupsafe-0.23
  • (venv)Mac:myproject michael$ python myapp.py
  • 在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对myproject这个应用创建的。
  • 退出当前的venv环境,使用deactivate命令:
  • (venv)Mac:myproject michael$ deactivate
  • Mac:myproject michael$
  • 此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。
  • 完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。
  • virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

在虚拟环境安装Python套件

  • Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:
  • pip install [套件名称]
  • 如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:
  • export PIP_REQUIRE_VIRTUALENV=true
  • 或者让在执行pip的时候让系统自动开启虚拟环境:
  • export PIP_RESPECT_VIRTUALENV=true

如何直接使用sublime在虚拟环境中build?

  • 根据网上的资料,编辑了sublime-project file,添加了如下代码:
    "build_systems":    [        {            "name": "Run Tests",            "working_dir": "/D/Other/flasky/flasky.sublime-project",            "cmd": ["D/Other/flasky/venv/Scripts/activate/python.exe", "manage.py", "test"]        }    ]
  • 然而并没有什么用。我的是windows操作系统,使用的是sublime text3.
  • “working_dir”: “/D/Other/flasky/flasky.sublime-project”中的flasky.sublime-project多写了,删掉。

Virtualenvwrapper

  • Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
    1. 将所有虚拟环境整合在一个目录下
    1. 管理(新增,删除,复制)虚拟环境
    1. 切换虚拟环境

安装

  • sudo easy_install virtualenvwrapper
  • 此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。
  • 创建目录用来存放虚拟环境
  • mkdir $HOME/.virtualenvs
  • 在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs
  • 在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh
  • 运行: source ~/.bashrc
  • 此时virtualenvwrapper就可以使用了。
  • 列出虚拟环境列表
  • workon
  • 也可以使用
  • lsvirtualenv
  • 新建虚拟环境
  • mkvirtualenv [虚拟环境名称]
  • 启动/切换虚拟环境
  • workon [虚拟环境名称]
  • 删除虚拟环境
  • rmvirtualenv [虚拟环境名称]
  • 离开虚拟环境
  • deactivate

Scrapy、PIL、BeautifulSoup

Scrapy

  • 学习Python爬虫必须要使用的框架Scrapy,话不多说。
  • pip install Scrapy

PIL

  • pip install pil

错误信息

  • Could not find a version that satisfies the requirement PIL (from versions: )
  • No matching distribution found for PIL
  • 解决方法
  • Pillow is a maintained fork of PIL, so I recommend using Pillow. But you can’t have both installed at the same time.
  • First, remove both PIL and Pillow.
  • Then install Pillow with pip install pillow (although, depending on platform, you may need some prerequisites.
  • Then make sure code is using from PIL import Image rather than import Image.

应用示例

    import requests    r = requests.get('http://i11.tietuku.com/a6ac3cea744bce33.jpg')    from PIL import Image    from StringIO import StringIO    i = Image.open(StringIO(r.content))    i.show()
    import requests    r = requests.get('https://github.com/timeline.json')    print(r.json())    print(r.content)    print(type(r.text))  # Unicode    print(type(r.json()))  # dict    print(r.encoding)    payload = {'key1': 'value1', 'key2': 'value2'}    r = requests.get("http://httpbin.org/get", params=payload)    print(r.url)
0 0
原创粉丝点击