web-dev-qa-db-fra.com

ImportError: Aucun module nommé 'thread'

quand je lance mitmproxy commande en ligne de commande, j'obtiens l'erreur suivante.

% mitmproxy
Traceback (most recent call last):
  File "/usr/local/bin/mitmproxy", line 7, in <module>
    from libmproxy.main import mitmproxy
  File "/usr/local/lib/python3.5/site-packages/libmproxy/main.py", line 5, in <module>
    import thread
ImportError: No module named 'thread'

J'ai googlé cette erreur et trouvé cette page de questions-réponses sur stackoverflow.

pydev importerror: pas de module nommé thread, le débogage ne fonctionne plus après la mise à niveau de pydev

selon la page ci-dessus, l'erreur se produit car le module "thread" est renommé "_thread" en python3.

Donc, je sais ce qui cause cette erreur, mais alors quoi?

Je ne sais pas quoi faire maintenant pour me débarrasser de cette erreur.

Je suis nouveau sur Python. Je viens d'installer Python et pip dans mon Mac OSX, comme indiqué ci-dessous, car je souhaite utiliser mitmproxy .

% which pip
/usr/local/bin/pip
% pip --version
pip 8.1.1 from /usr/local/lib/python3.5/site-packages (python 3.5)

% which python
/usr/bin/python
% which python3
/usr/local/bin/python3

% python --version
Python 2.7.10
% python3 --version
Python 3.5.1

quelqu'un pourrait-il s'il vous plaît me dire quoi faire maintenant?

Information additionnelle

Comme @linusg a répondu, j'ai créé le fichier "thread.py" dans le répertoire "site-packages" et collé le code ci-dessous dans "thread.py"

from _thread import *
__all__ = ("error", "LockType", "start_new_thread", "interrupt_main", "exit", "allocate_lock", "get_ident", "stack_size", "acquire", "release", "locked")

Après cela, "ImportError: No module named 'thread'" a disparu, mais j'ai maintenant une autre ImportError, qui est "import Cookie ImportError: No module named 'Cookie'".

Il semblerait qu'en Python 3, le module Cookie soit renommé en http.cookies (stackoverflow.com/questions/3522029/Django-mod-python-error).

Maintenant qu'est-ce que je suis supposé faire?

Ce que j'ai dans le répertoire "site-packages"

% ls /usr/local/lib/python3.5/site-packages                                                  (git)-[master]
ConfigArgParse-0.10.0.dist-info/                mitmproxy-0.15.dist-info/
OpenSSL/                                        netlib/
PIL/                                            netlib-0.15.1.dist-info/
Pillow-3.0.0.dist-info/                         passlib/
PyYAML-3.11.dist-info/                          passlib-1.6.5.dist-info/
__pycache__/                                    pathtools/
_cffi_backend.cpython-35m-darwin.so*            pathtools-0.1.2.dist-info/
_markerlib/                                     pip/
_watchdog_fsevents.cpython-35m-darwin.so*       pip-8.1.1.dist-info/
argh/                                           pkg_resources/
argh-0.26.1.dist-info/                          pyOpenSSL-0.15.1.dist-info/
backports/                                      pyasn1/
backports.ssl_match_hostname-3.5.0.1.dist-info/ pyasn1-0.1.9.dist-info/
blinker/                                        pycparser/
blinker-1.4.dist-info/                          pycparser-2.14.dist-info/
certifi/                                        pyparsing-2.0.7.dist-info/
certifi-2016.2.28.dist-info/                    pyparsing.py
cffi/                                           pyperclip/
cffi-1.6.0.dist-info/                           pyperclip-1.5.27.dist-info/
click/                                          setuptools/
click-6.2.dist-info/                            setuptools-19.4-py3.5.Egg-info/
configargparse.py                               sitecustomize.py
construct/                                      six-1.10.0.dist-info/
construct-2.5.2.dist-info/                      six.py
cryptography/                                   test/
cryptography-1.1.2.dist-info/                   thread.py
easy_install.py                                 tornado/
hpack/                                          tornado-4.3.dist-info/
hpack-2.0.1.dist-info/                          urwid/
html2text/                                      urwid-1.3.1.dist-info/
html2text-2015.11.4.dist-info/                  watchdog/
idna/                                           watchdog-0.8.3.dist-info/
idna-2.1.dist-info/                             wheel/
libmproxy/                                      wheel-0.26.0-py3.5.Egg-info/
lxml/                                           yaml/
lxml-3.4.4.dist-info/
5
user5809117

Vous essayez d'exécuter du code Python 2 sur Python 3, ce qui ne fonctionnera pas.

Depuis avril 2016, mitmproxy ne prend en charge que Python 2.7. Nous travaillons activement à résoudre ce problème dans les prochains mois, mais pour le moment, vous devez utiliser Python 2 ou les fichiers binaires fournis à l’adresse http://mitmproxy.org .

Depuis août 2016, la version de développement de mitmproxy prend désormais en charge Python 3.5+. La prochaine version (0.18) sera la première à prendre en charge Python 3.5 +. </ S>

À compter de janvier 2017, mitmproxy ne prend en charge que Python 3.5+.

5
Maximilian Hils

La solution la plus simple consiste à créer un virtualenv avec python2 et à exécuter mitmproxy sur ce virtualenv

virtualenv -p `which python2` .env
source .env/bin/activate
pip install mitmproxy
.env/bin/mitmproxy
0
Cemal Eker