在python3中安装python2的包(比如builtwith)

    • 前言
    • 第一个包就是builtwith
    • 第二个包是使用CSS选择器的lxml包
    • 第三个包是pymongo支持MongoDB


前言

最近,学习编写爬虫代码的时候,由于我用的是python3,遇到了一些第三方包在安装的时候出错的情况。


第一个包就是builtwith

1.首先去pypi网站上看看这个包是否有支持python3的版本。。。发现,好像并没有(这就有点尴尬了)
2.又想用这个模块,又不想再去搞一个python2的环境,也不想把前面写的一些代码再调整,怎么办呢?—–那就只有自己手动改这个模块,将这个模块的代码改成适应python3的版本。
3.安装:在 pypi网站上或者builtwith模块发布的网站上(在pypi上可以看到HOME Page)下载这个模块的安装包。有以下几种安装的方式

  1. 在命令窗口使用 pip install ……(安装包路径+名字)(python3默认安装了。pip 可以通过easy_install 安裝。)
  2. 在命令窗口使用 easy_install ….(同上)(python3默认已经安装。先下载ez_setup.py,运行python ez_setup 进行easy_install工具的安装)
  3. 解压安装包后,进入包所在的目录,在命令窗口使用 python setup.py install命令
  4. 对于只有一个文件的模块,直接把文件拷贝到 $python_dir/Lib(推荐使用pip制作成一个安装包)
  5. 使用pycharm IDE的话,可以使用它的模块安装器安装。(File-Settings-Project-Project-Interpreter能更新能安装)

4.导入import buildwith。你会发现有很多错误。这时候,需要更改模块的__init__.py文件。需要改以下几点,改的同时可以使用import再试试,根据错误信息进行更改(可以先使用python3自带的2to3模块将python2语法的代码转换成python3的):

  1. 改python2和python3显著不同的语法:print 和print();urllib2包分拆成urllib.request和urllib.error(这个根据情况修改使用urllib2包的地方)
  2. 字符串默认格式变了,python2是ASCII字符串,python3是Unicode字符串。需要修改urllib包返回数据的地方,要使用decode()方法解码,原来的代码才能正确运行。
  3. 可以安装chardet包,使用其detect方法获取字符串的编码方式,进行相应的解码。(参考:Python3 安装 BuiltWith 模块

5.最后,import builtwith测试一下吧。


第二个包是使用CSS选择器的lxml包

1.还是首先去pypi上看看最新的安装包lxml 3.7.3。一看,发现已经支持到了python3.6了。
2.果然使用pip install lxml方法安装这个包试试。打开命令窗口,输入pip install lxml,会看到

Collecting lxml
Downloading lxml-3.7.3-cp35-cp35m-win_amd64.whl(3.1MB)

这是自动下载对应我电脑上python3.5版本的whl安装包。
3.下载好后,没有安装。发现错误:

THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.

说下载的文件hash值不对。并且提示我更新我的pip工具。

You are using pip version 8.1.1, however version 9.0.1 is available.

4.更新pip:

python -m pip install –upgrade pip

Successfully installed pip-9.0.1 更新成功
5.继续 pip install lxml
6.其实,还有另外的安装方法。手动安装:

  1. 就是自己从pypi网站上下载跟自己系统版本和python版本匹配的安装包。比如,lxml-3.7.3-**cp35-cp35**m-win_amd64.whl
  2. 再 在命令窗口使用 pip install ……(安装包路径+名字)
  3. windows系统的,也可以直接下载lxml-3.7.3.win-amd64-py3.4.exe (md5) 这种.exe的文件直接安装(前提是你下载的文件跟你系统上的python版本匹配

7.如果是linux系统还需要安装依赖:

$ sudo apt-get install libxml2 libxml2-dev

$ sudo apt-get install libxlst libxslt-dev

$ sudo apt-get install python-libxml2 python-libxslt

再安装lxml
$ sudo easy_install lxml


第三个包是pymongo,支持MongoDB

1.查看pypi的pymongo 3.4.0
2.下载相应安装包:发现只支持到python3.5,如果我现在的python版本是最新的3.6怎么办呢?
3.下载离我python3.6版本最近的安装包pymongo-3.4.0-cp35-none-win_amd64.whl (md5) (因为我是Windows系统,所以下载中间带win的)
4.将安装包文件中间代表python版本的标志cp35更改位cp36(我的python版本),然后使用pip安装。

PS: 这样安装确实可以成功,不过由于并不是官方给的符合python版本的安装包,可能出现最新的python版本中某些语法跟安装包中不符的情况。不过一般来说这种语法上的大改动很少,不是python2到python3这种情况,仅仅是python3.5到python3.6这样是不会发生语法改动的,一般这种版本是兼容的。一 旦在使用过程中发现了问题,可能需要自己手动调整了,所以建议这样安装的包首先自己要在IDLE中多测试一下,其功能是否满足自己预期。

你可能感兴趣的:(Python)