web-dev-qa-db-fra.com

Je reçois une erreur dans python3 lors de l'importation de mécaniser

J'obtiens une erreur dans python3 lors de l'importation de la mécanisation.

Je viens d'installer mécanize dans mon virtualenv où python3 est installé.

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

$ pip freeze
mechanize==0.2.5

Mais, lorsque j'essaie d'importer mécaniser dans mon python, j'obtiens cette erreur.

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'

Quelqu'un sait-il comment résoudre ce problème?

Je suis nouveau à python et j'ai étudié comment programmer en python ces jours-ci).

Merci d'avance pour votre aide!

mise à jour

J'ai installé mécaniser pour python . Maintenant, j'ai une autre erreur.

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

J'ai vérifié ce que j'ai installé dans mon virtualenv de travail. J'ai trouvé des avertissements.

$ 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

Hélas, mechanize ne prend pas en charge Python 3. http://wwwsearch.sourceforge.net/mechanize/faq.html

Python 2.4, 2.5, 2.6 ou 2.7. Python 3 n'est pas encore pris en charge.

Vous aimerez peut-être commenter le problème sur https://github.com/jjlee/mechanize/issues/96


Mise à jour: j'ai écrit ma propre bibliothèque d'automatisation MechanicalSoup. C'est Python 3 compatible https://github.com/hickford/MechanicalSoup

14
Colonel Panic

Le module MechanicalSoup a fusionné Mechanical et BeautifulSoup dans la même bibliothèque et peut être utilisé depuis Python 2.6 à 3.4.

dans l'invite de commande, installez MechanicalSoup:

pip install MechanicalSoup

Importez ensuite en python,

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

Je pense que vous avez peut-être installé la version Python 2 de mechanize, et la nouvelle sémantique d'importation Python 3 casse l'ancien code Python 2. Une recherche rapide, et il semble que le support de Python 3 pour la mécanisation soit encore un peu faible. Cependant, j'ai trouvé un branche Python .

Vous pouvez essayer d'installer manuellement à partir du code source auquel j'ai lié. Une fois que vous avez téléchargé la source, changez votre répertoire pour être dans le répertoire de mécanisation. Saisissez ensuite $python3 setup.py install Dans le terminal.

2
rectangletangle