kylin

醉里论道,醒时折花。

kylin

python折腾过程中遇到的坑全纪录

Scrapy的依赖库Six与系统依赖库Six发生了冲突

这应该是一个mac

error

1
2
3
DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
Uninstalling six-1.4.1:
...

解决方法

参考starkoverflow

  • 使用virtualenv创建一个隔离的python环境
  • 使用--ignore-installed命令
1
sudo pip install libName --upgrade --ignore-installed six

Scrapy命令使用时报错

error

1
ImportError: cannot import name xmlrpc_client

这应该是一个mac

方法一:重装six

1
sudo rm -rf /Library/Python/2.7/site-packages/six*
1
sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six*
1
sudo pip install six

EI Capitan系统上,这个方法会失败,执行第二行时报错如下:

1
2
Operation not permitted” error
# six1.4是预装的,无法删除

方法二:.bash_profile中添加

1
export PYTHONPATH=$PYTHONPATH:/Library/Python/2.7/site-packages

亲测不好使

方法三:用virtualenv创建隔离的python环境(mac可以使用virtualenvwrapper)

最后使用这个姿势解决了

  • 使用方式
1
pip install virutalenv
1
2
3
4
5
6
virtualenv [虚拟环境名称]
# 创建虚拟环境
# 若不想使用系统包可以加一个参数
virtualenv --no-site-packages [虚拟环境名称]
# 如
virtualenv --no-site-packages py2_7
1
2
3
# 激活环境
cd py2_7
source ./bin/activate

此时,就进入了一个隔离的环境,安装,卸载和使用模块,都会在py2_7环境中,而不会影响系统和其他环境。

重新再环境中安装scrapy并使用

1
2
# 退出环境
deactive

如果还不好使就重新安装系统中的python并卸载scrapy,再进入环境中安装scrapy

使用scrapy命令提示缺少zope包

error

1
No module named zope.interface

解决方式

  • 下载zope.interface并解压
  • 定位到zope文件夹,使用python命令安装
1
2
3
4
wget http://pypi.python.org/packages/source/z/zope.interface/zope.interface-4.0.1.tar.gz
tar xvf zope.interface-4.0.1.tar.gz
cd zope.interface-4.0.1
python setup.py install