2016-04-23 24 views
4

Wenn ich mitmproxy Befehl in der Befehlszeile ausführen, erhalte ich den folgenden Fehler.ImportError: Kein Modul namens 'Thread'

% 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' 

gegoogelt ich diesen Fehler und fand diese Stackoverflow Q & A-Seite.

pydev importerror: no module named thread, debugging no longer works after pydev upgrade

nach der Seite oben, tritt der Fehler auf, weil Modul "thread" umbenannt wird auf "_thread" in python3.

Also, ich weiß, was diesen Fehler verursacht, aber was dann?

Ich weiß nicht, was jetzt zu tun ist, um diesen Fehler loszuwerden.

Ich bin neu in Python. Ich habe gerade Python und pip in meinem Mac OSX wie unten gezeigt installiert, weil ich mitmproxy verwenden möchte.

% 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 

könnte mir bitte jemand sagen, was ich jetzt tun soll?

Zusätzliche Informationen

Als @linusg beantwortet, habe ich "thread.py" Datei in "site-packages" Verzeichnis und den Code unten in klebte "thread.py"

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

Nachdem ich dies tat , "ImportError: No module named 'thread'" verschwunden, aber jetzt habe ich einen anderen ImportError, der "import Cookie ImportError: No module named 'Cookie'" ist.

Es scheint, dass in Python 3, Cookie Modul in http.cookies (stackoverflow.com/questions/3522029/django-mod-python-error) umbenannt wird.

Nun, was soll ich tun?

Was ich habe, in "site-packages" Verzeichnis

% 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/ 

Antwort

0

Gehen Sie site-packages Ordner, erstellen Sie eine Datei thread.py und fügen Sie diesen Code in es genannt:

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

Dies schafft ein 'Alias' für das Modul _thread namens thread. Während das _thread Modul sehr klein ist, können Sie dir() für größere Module verwenden:

# Examle for the Cookies module which was renamed to http.cookies: 
# Cookies.py in site-packages 
import http.cookies 
__all__ = tuple(dir(http.cookies)) 

hoffe, das hilft!

+0

Dank für Ihre Hilfe danken! Ich werde es jetzt versuchen! – hytm

+0

jetzt habe ich einen weiteren Fehler, der unten ist. File "/usr/local/lib/python3.5/site-packages/libmproxy/models/http.py", Zeile 2, in Import Plätzchen Import: Kein Modul namens 'Cookie' – hytm

+0

es scheint, dass in Das python3-Cookie-Modul wurde in http.cookies umbenannt. (http://stackoverflow.com/questions/3522029/django-mod-python-error) – hytm

3

Sie versuchen, Python 2-Code auf Python 3 auszuführen, der nicht funktioniert.

Ab April 2016 unterstützt nurmproxy nur Python 2.7. Wir arbeiten aktiv daran, das in den nächsten Monaten zu beheben, aber jetzt müssen Sie Python 2 oder die Binärdateien verwenden, die unter http://mitmproxy.org bereitgestellt werden.

Seit August 2016 unterstützt die Entwicklungsversion von mitmproxy Python 3.5+. Die nächste Version (0.18) wird die erste sein, die Python 3.5+ unterstützt.

Seit Januar 2017 unterstützt nurmehrproxy Python 3.5+.

+0

Dies löst den Fehler von OP nicht. –

+1

Die akzeptierte Lösung versucht fälschlicherweise eine Python 3-Installation zu "reparieren", um Python 2-Code auszuführen, der nicht funktioniert. Das ursprüngliche Ziel von OP ist es, mitmproxy laufen zu lassen, also beantwortet dies seine Frage, wie er mitmproxy ausführen kann (wonach die Leute suchen). –

0

einfachste Lösung ist es, eine virtualenv mit python2 zu erstellen und

auf dieser virtualenv laufen mitmproxy
virtualenv -p `which python2` .env 
source .env/bin/activate 
pip install mitmproxy 
.env/bin/mitmproxy 
+0

**. Env/bin/mitmproxy -bash: .env/bin/mitmproxy: Keine solche Datei oder Verzeichnis ** –

+0

Sie sollten mimtproxy in diesem virtuellen env mit 'pip installieren mitmproxy 'installieren –

+0

Jetzt erhalte ich einen Fehler: * * Konnte keine Version finden, die die Anforderung erfüllt mimtmproxy (von Versionen:) Keine passende Distribution gefunden für mimtmproxy ** –