ImportError: Нет модуля с именем 'thread'

Когда я запускаю команду mitmproxy в командной строке, я получаю следующую ошибку.

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

Я погуглил эту ошибку и нашел страницу с ответами на вопросы stackru.

импортер pydev: нет модуля с именем потока, отладка больше не работает после обновления pydev

согласно странице выше, ошибка происходит потому, что модуль "thread"переименован в"_thread"в python3.

Итак, я знаю, что является причиной этой ошибки, но что тогда?

Я не знаю, что делать сейчас, чтобы избавиться от этой ошибки.

Я новичок в питоне. Я только что установил Python и pip в мой Mac OSX, как показано ниже, потому что я хочу использовать 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

Может ли кто-нибудь сказать мне, что делать сейчас?

Дополнительная информация

Как @linusg ответил, я создал "thread.py"файл в каталоге"site-packages"и вставленный ниже код в"thread.py"

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

После того, как я это сделал,ImportError: No module named 'thread'"исчез, но теперь у меня есть еще одна ошибка ImportError"import Cookie ImportError: No module named 'Cookie'".

Похоже, что в Python 3 Cookie модуль переименован в http.cookies (Stackru.com/questions/3522029/django-mod-python-error).

Что мне теперь делать?

Что у меня в каталоге "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/

6 ответов

Решение

Иди к тебе site-packages папку, создайте файл с именем thread.py и вставьте в него этот код:

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

Это создает "псевдоним" для модуля _thread называется thread, В то время как _thread модуль очень маленький, вы можете использовать dir() для больших модулей:

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

Надеюсь это поможет!

В Python 3 вместо:

import thread

Делать:

import _thread

Вы пытаетесь запустить код Python 2 на Python 3, который не будет работать.

По состоянию на апрель 2016 года, mitmproxy поддерживает только Python 2.7. Мы активно работаем над тем, чтобы это исправить в ближайшие месяцы, но сейчас вам нужно использовать Python 2 или двоичные файлы, представленные на http://mitmproxy.org/.

По состоянию на август 2016 года версия mitmproxy для разработки теперь поддерживает Python 3.5+. Следующая версия (0.18) будет первой, включая поддержку Python 3.5+.

По состоянию на январь 2017 года, mitmproxy поддерживает только Python 3.5+.

Самое простое решение - создать virtualenv с python2 и запустить mitmproxy на этом virtualenv.

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

Имя сохраненного файла может быть потоком, это приведет к ошибке, так как потоки - это предопределенный класс в Python. Попробуйте изменить имя вашего файла. Это поможет....

Как говорили раньше: в python3 поток теперь называется _thread.
Вы также можете
import _thread
или, если вас беспокоит подчеркивание, вы можете исправить это:
import _thread and thread

Другие вопросы по тегам