问题描述
我正在尝试通过像这样的pip安装mitmproxy包:
$ sudo pip install mitmproxy
它终止时出现以下错误消息:
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/_openssl.c -o build/temp.linux-x86_64-2.7/build/temp.linux-x86_64-2.7/_openssl.o
build/temp.linux-x86_64-2.7/_openssl.c:391:30: fatal error: openssl/opensslv.h: No such file or directory
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Can't roll back cryptography; was not uninstalled
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-jvLTVf/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-DrY4DI-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip-build-jvLTVf/cryptography
Storing debug log for failure in /home/niklas/.pip/pip.log
在此之后它有点安装,至少我可以在之后卸载它。
$ mitmproxy
导致
Traceback (most recent call last):
File "/usr/local/bin/mitmproxy", line 7, in <module>
from mitmproxy.main import mitmproxy
File "/usr/local/lib/python2.7/dist-packages/mitmproxy/main.py", line 7, in <module>
from . import version, cmdline
File "/usr/local/lib/python2.7/dist-packages/mitmproxy/cmdline.py", line 6, in <module>
import configargparse
ImportError: No module named configargparse
最佳解决方案
其他答案仅解决依赖关系,以使您提到的错误消失。所需的所有依赖项列表实际上要长得多。
你可以安装它们:
sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev
然后你可以安装mitmproxy
:
sudo pip install mitmproxy
并运行它:
mitmproxy
资料来源:documentation
次佳解决方案
»» fatal error: openssl/opensslv.h: No such file or directory ««
安装openssl:sudo apt-get update && sudo apt-get install libssl-dev
第三种解决方案
在您的输出中实际上存在两个不同的问题(假设已经解决了所有其他依赖性问题)。两者都需要修复。
缺少SSL库
-
正如Knud Larsen在其answer to this question中所述,您缺少OpenSSL库。有关该问题,请参阅他们对此问题的回答。
缺少Python模块
-
有一个python脚本是你正在运行的任何东西的一部分,它缺少一个需要运行的模块(称为
configargparse
)。如果您使用的是Ubuntu 15.10或更高版本,则可以通过执行sudo apt-get install python-configargparse
来安装它。如果您在15.10之前使用任何版本的Ubuntu,则需要通过pip
安装它以下载它并使其可供系统使用:sudo pip install configargparse
(请注意,一旦修复缺少的SSL库问题,python pip install mitmproxy
将实现相同类型的依赖项解决方案,但如果由于某种原因你不必手动安装该模块)
NOTE: Your question states that you are using Ubuntu MATE 15.10. Ubuntu 15.10 for all variants has gone EndOfLife on July 28, 2016. You should consider upgrading to 16.04, in order to receive continued Ubuntu support and updates.