ImportError: No module named 'thread'
ImportError: No module named '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'
我用谷歌搜索了这个错误并找到了这个 Whosebug 问答页面。
pydev importerror: no module named thread, debugging no longer works after pydev upgrade
根据上面的页面,错误发生是因为模块“thread
”在python3.
中被重命名为“_thread
”
所以,我知道是什么导致了这个错误,但是接下来呢?
我不知道现在该怎么做才能摆脱这个错误。
我是 python 的新手。我刚刚将 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 回答的那样,我在 "site-packages" 目录中创建了“thread.py
”文件,并将下面的代码粘贴到“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'
”。
好像在Python3中,Cookie
模块重命名为http.cookies
(whosebug.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/
转到您的 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
创建了一个 'alias'。虽然 _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 2 代码 Python 3,这将不起作用。
截至 2016 年 4 月,mitmproxy 仅支持 Python 2.7。我们正在积极努力在接下来的几个月中修复该问题,但现在您需要使用 Python 2 或 http://mitmproxy.org.
中提供的二进制文件
截至2016年8月,mitmproxy开发版现已支持Python3.5+。下一个版本 (0.18) 将是第一个支持 Python 3.5+.
的版本
截至 2017 年 1 月,mitmproxy 仅支持 Python 3.5+。
最简单的解决方案是在这个 virtualenv
上使用 python2 和 运行 mitmproxy 创建一个 virtualenv
virtualenv -p `which python2` .env
source .env/bin/activate
pip install mitmproxy
.env/bin/mitmproxy
保存文件的名称可能是 threading,这会产生错误,因为 threading 是 Python 中预定义的 class。尝试更改文件的名称。会有帮助....
在 Python 3 而不是:
import thread
做:
import _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'
我用谷歌搜索了这个错误并找到了这个 Whosebug 问答页面。
pydev importerror: no module named thread, debugging no longer works after pydev upgrade
根据上面的页面,错误发生是因为模块“thread
”在python3.
_thread
”
所以,我知道是什么导致了这个错误,但是接下来呢?
我不知道现在该怎么做才能摆脱这个错误。
我是 python 的新手。我刚刚将 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 回答的那样,我在 "site-packages" 目录中创建了“thread.py
”文件,并将下面的代码粘贴到“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'
”。
好像在Python3中,Cookie
模块重命名为http.cookies
(whosebug.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/
转到您的 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
创建了一个 'alias'。虽然 _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 2 代码 Python 3,这将不起作用。
截至 2016 年 4 月,mitmproxy 仅支持 Python 2.7。我们正在积极努力在接下来的几个月中修复该问题,但现在您需要使用 Python 2 或 http://mitmproxy.org.
截至2016年8月,mitmproxy开发版现已支持Python3.5+。下一个版本 (0.18) 将是第一个支持 Python 3.5+.
的版本截至 2017 年 1 月,mitmproxy 仅支持 Python 3.5+。
最简单的解决方案是在这个 virtualenv
上使用 python2 和 运行 mitmproxy 创建一个 virtualenvvirtualenv -p `which python2` .env
source .env/bin/activate
pip install mitmproxy
.env/bin/mitmproxy
保存文件的名称可能是 threading,这会产生错误,因为 threading 是 Python 中预定义的 class。尝试更改文件的名称。会有帮助....
在 Python 3 而不是:
import thread
做:
import _thread