【问题标题】:Mac OS X El Capitan - Scrapy/Python ImportError: cannot import name xmlrpc_clientMac OS X El Capitan - Scrapy/Python ImportError:无法导入名称 xmlrpc_client
【发布时间】:2016-02-28 23:46:10
【问题描述】:

我正在尝试在 Mac OS X El Capitan 上使用 Scrapy。我已经安装了 zsh,我已经尝试了所有可以在网上找到的方法来解决这个问题。我也查看了Scrapy throws ImportError: cannot import name xmlrpc_client 并无法解决我的问题!

通过 brew 安装 Python 并添加“pip install scrapy”:

➜  DriverEBV  which python
/usr/local/bin/python

我的 .zshrc 有以下行:

export PATH=/usr/local/bin:$PATH
export PYTHONPATH="/Library/Python/2.7/site-packages"

这是我得到的错误:

➜  DriverEBV  scrapy runspider DriverEBV.py
Traceback (most recent call last):
  File "/usr/local/bin/scrapy", line 7, in <module>
    from scrapy.cmdline import execute
  File "/Library/Python/2.7/site-packages/scrapy/__init__.py", line 48, in <module>
    from scrapy.spiders import Spider
  File "/Library/Python/2.7/site-packages/scrapy/spiders/__init__.py", line 10, in <module>
    from scrapy.http import Request
  File "/Library/Python/2.7/site-packages/scrapy/http/__init__.py", line 12, in <module>
    from scrapy.http.request.rpc import XmlRpcRequest
  File "/Library/Python/2.7/site-packages/scrapy/http/request/rpc.py", line 7, in <module>
    from six.moves import xmlrpc_client as xmlrpclib
ImportError: cannot import name xmlrpc_client

当我现在运行“pip install scrapy”时,我看到的是这样的:

➜  DriverEBV  pip install scrapy
Requirement already satisfied (use --upgrade to upgrade): scrapy in /Library/Python/2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /usr/local/lib/python2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /usr/local/lib/python2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): w3lib>=1.8.0 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): lxml in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.2 in /usr/local/lib/python2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): service-identity in /Library/Python/2.7/site-packages (from scrapy)
Requirement already satisfied (use --upgrade to upgrade): cryptography>=0.7 in /usr/local/lib/python2.7/site-packages (from pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /usr/local/lib/python2.7/site-packages (from Twisted>=10.0.0->scrapy)
Requirement already satisfied (use --upgrade to upgrade): characteristic>=14.0.0 in /Library/Python/2.7/site-packages (from service-identity->scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyasn1-modules in /Library/Python/2.7/site-packages (from service-identity->scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyasn1 in /Library/Python/2.7/site-packages (from service-identity->scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): enum34 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): ipaddress in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): idna>=2.0 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): cffi>=1.1.0 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.7->pyOpenSSL->scrapy)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python2.7/site-packages (from cffi>=1.1.0->cryptography>=0.7->pyOpenSSL->scrape)

有人能帮帮我吗?

【问题讨论】:

  • 不幸的是不是重复的。我已经尝试了您发布的文章中讨论的所有内容。所以我有没有尝试过几乎所有其他在线可用的东西,从最不打扰到最打扰。
  • 这里为什么要设置python路径?
  • 我的想法是在我的用户中添加带有 pip 的 Python 以与 Mac OS 原生 pip 分开,并使用 --user 安装 scrapy。
  • 你确定你的 .zshrc 有来源吗?如果您在终端中专门键入:export PYTHONPATH="/Library/Python/2.7/site-packages",然后是一个简单的scrapy shell http://stackoverflow.com,您仍然会收到错误吗?

标签: python macos scrapy pip


【解决方案1】:

我对安装在/Library/Python 目录中的 Mac OS X 系统 Python 库感到痛苦。对我来说效果很好的是 MacPorts 和 virtualenv 的组合:

  1. 安装MacPorts

  2. 从 MacPorts 安装 Python、pip 和 virtualenv:

    /opt/local/bin/port install python27
    /opt/local/bin/port install py27-pip
    /opt/local/bin/port install py27-virtualenv
    
  3. 设置虚拟环境:

    /opt/local/bin/virtualenv-2.7 myenv
    
  4. 激活 virtualenv(不要忘记点!)

    . myenv/bin/activate
    
  5. 安装scrapy

    pip install scrapy
    

这样,系统 Python 库不会受到影响,您可以安装任何您喜欢的包,而无需删除或升级现有包。

【讨论】:

  • 我认为在命令行上运行scrapy时解决了我的问题。在 PyCharm 中运行时,我收到此错误。有什么解决的建议吗?
  • PyCharm 现在似乎支持 virtualenv。您应该可以通过Project Interpreteradd an existing virtualenv。希望这会有所帮助。
  • 是的,我在发布此评论后发现了这一点。感谢您提供以上信息,奖励您赏金
【解决方案2】:

帮助我的是卸载 6 和 scrapy,然后重新安装

pip uninstall six
pip uninstall scrapy

pip install six
pip install scrapy

如有必要,请使用sudo 运行。


或者,你也可以尝试升级六和scrapy:

pip install --upgrade scrapy
pip install --upgrade six

【讨论】:

  • 我认为在命令行上运行scrapy时解决了我的问题。在 PyCharm 中运行时,我收到此错误。有什么解决的建议吗?
  • @GuyDaher 设置中的项目解释器是否正确? (我相信在这个例子中它应该是默认的python安装)
【解决方案3】:

尝试通过 pip 卸载,然后使用 easy_install 命令重新安装。我在使用另一个 python 模块时遇到了同样的问题,这样做解决了我在 Mac OS X El Capitan 上的问题。

【讨论】:

    【解决方案4】:

    我认为 OS X 上最好的解决方案应该是“不要使用系统 python”。它会让生活更轻松。 This link 展示了如何做到这一点。

    有一个已知问题会阻止 pip 更新系统包。必须解决这个问题才能成功安装 Scrapy 及其依赖项。以下是一些建议的解决方案:

    (推荐)不要使用系统 python,安装一个不与系统其余部分冲突的新的更新版本。以下是使用自制包管理器的方法:

    1. 按照http://brew.sh/ 中的说明安装自制软件
    2. 更新您的 PATH 变量以声明应在系统软件包之前使用自制软件包(如果您使用 zsh 作为默认 shell,请将 .bashrc 更改为 .zshrc):

    echo "export PATH=/usr/local/bin:/usr/local/sbin:$PATH" >> ~/.bashrc

    1. 重新加载 .bashrc 以确保更改已发生:

    来源 ~/.bashrc

    1. 安装python:

    brew 安装 python

    1. 最新版本的 python 已将 pip 与它们捆绑在一起,因此您无需单独安装它。如果不是这种情况,请升级 python:

    酿造更新; brew升级python

    【讨论】:

    • 你能用这种方法安装和导入“Scrapy”吗?
    猜你喜欢
    • 2016-06-09
    • 2013-01-28
    • 2017-02-17
    • 2013-09-14
    • 2016-06-25
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多