【问题标题】:I get an error in python3 when importing mechanize导入 mechanize 时在 python3 中出现错误
【发布时间】:2014-04-07 01:59:33
【问题描述】:

我在导入 mechanize 时遇到 python3 错误。

我刚刚在安装了 python3 的 virtualenv 中安装了 mechanize。

$ which python3
/Users/myname/.virtualenvs/python3/bin/python3

$ pip freeze
mechanize==0.2.5

但是,当我尝试在我的 python 代码中导入 mechanize 时,我得到了这个错误。

import mechanize

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-6b82e40e2c8e> in <module>()
----> 1 import mechanize

/Users/myname/.virtualenvs/python3/lib/python3.3/site-packages/mechanize/__init__.py in <module>()
    117 import sys
    118 
--> 119 from _version import __version__
    120 
    121 # high-level stateful browser-style interface

ImportError: No module named '_version'

有人知道如何解决这个问题吗?

我是python新手,这几天一直在研究如何用python编程。

提前感谢您的帮助!

更新

我已经安装了mechanize for python3。 现在,我又遇到了一个错误。

In [1]: import mechanize
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-6b82e40e2c8e> in <module>()
----> 1 import mechanize

/Users/myname/.virtualenvs/python3/lib/python3.3/site-packages/mechanize-0.2.6.dev_20140305-py3.3.egg/mechanize/__init__.py in <module>()
    120 
    121 # high-level stateful browser-style interface
--> 122 from ._mechanize import \
    123      Browser, History, \
    124      BrowserStateError, LinkNotFoundError, FormNotFoundError

/Users/myname/.virtualenvs/python3/lib/python3.3/site-packages/mechanize-0.2.6.dev_20140305-py3.3.egg/mechanize/_mechanize.py in <module>()

/Users/myname/.virtualenvs/python3/lib/python3.3/site-packages/mechanize-0.2.6.dev_20140305-py3.3.egg/mechanize/_html.py in <module>()

ImportError: cannot import name _sgmllib_copy

我检查了我在工作的 virtualenv 中安装的内容。 我发现了一些警告。

$ pip freeze
cssselect==0.9.1
httplib2==0.8
ipython==1.1.0
lxml==3.2.4
## FIXME: could not find svn URL in dependency_links for this package:
mechanize==0.2.6.dev-20140305
pyquery==1.2.8
Warning: cannot find svn location for mechanize==0.2.6.dev-20140305

【问题讨论】:

  • 这很奇怪,我现在尝试安装并且成功了...
  • 您确定要安装 Python 3 版本的库吗? Python 3 改变了相对导入的语义,这破坏了很多 Python 2 代码。另外,您是否尝试过从交互式解释器中导入模块?
  • @rectangletangle 我尝试在终端的 ipython 中导入 mechanize。
  • @rectangletangle 哦,你的意思是如果我安装了用于 python3 的 mechanize?我没有检查我通过pip命令安装的那个是不是python3的。
  • 我在安装 mechanize 的 python3 分支时遇到同样的问题

标签: python python-3.x mechanize


【解决方案1】:

唉,mechanize 不支持 Python 3。http://wwwsearch.sourceforge.net/mechanize/faq.html

Python 2.4、2.5、2.6 或 2.7。尚不支持 Python 3。

您可能想在https://github.com/jjlee/mechanize/issues/96对此问题发表评论


更新:我编写了自己的自动化库 MechanicalSoup。它兼容 Python 3 https://github.com/hickford/MechanicalSoup

【讨论】:

  • 感谢 MechanicalSoup 库!这是一个巨大的帮助。 :)
【解决方案2】:

MechanicalSoup 模块将 Mechanical 和 BeautifulSoup 合并到同一个库中,可以从 Python 2.6 到 3.4 使用。

在命令提示符下安装 MechanicalSoup:

pip install MechanicalSoup

然后在python中导入,

import mechanicalsoup # Don’t forget to import the new module

【讨论】:

    【解决方案3】:

    我想你可能已经安装了 Python 2 版本的 mechanize,而新的 Python 3 导入语义正在破坏旧的 Python 2 代码。快速搜索一下,似乎 Python 3 对 mechanize 的支持仍然有点弱。但是,我确实找到了Python 3 branch

    您可以尝试从我链接到的源代码手动安装。下载源代码后,更改您的目录,以便您位于 mechanize 目录中。然后在终端输入$python3 setup.py install

    【讨论】:

    • 感谢您的帮助!我刚刚安装了你链接到的那个。但是,我又遇到了一个错误。我将编辑我的帖子以添加信息。
    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多