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.
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/
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+.
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