web-dev-qa-db-ja.com

mechanizeのインポート時にpython3でエラーが発生する

Mechanizeをインポートすると、python3でエラーが発生します。

Python3がインストールされているvirtualenvにmechanizeをインストールしました。

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

$ pip freeze
mechanize==0.2.5

しかし、mechanizeをpython=コードでインポートしようとすると、このエラーが発生します。

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=でプログラミングする方法を研究しています。

よろしくお願いします!

更新

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
19
crzyonez777

残念ながら、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

14
Colonel Panic

MechanicalSoupモジュールは、MechanicalとBeautifulSoupを同じライブラリにマージしたもので、Python 2.6から3.4まで)から使用できます。

コマンドプロンプトでMechanicalSoupをインストールします。

pip install MechanicalSoup

次に、pythonにインポートします。

import mechanicalsoup # Don’t forget to import the new module
4
Ashna Talati

MechanizeのPython 2バージョンをインストールした可能性があります。新しいPython 3インポートセマンティクスにより、古いPython 2コードが壊れています。クイック検索で、Python 3のmechanizeのサポートはまだ少し弱いようです。しかし、私は Python 3ブランチ を見つけました。

リンクしたソースコードから手動でインストールしてみることができます。ソースをダウンロードしたら、mechanizeディレクトリに移動するようにディレクトリを変更します。次に、ターミナルに$python3 setup.py installを入力します。

2
rectangletangle