«Фатальная ошибка: openssl / opensslv.h: нет такого файла или каталога», компилирующая mitmproxy

52

Я пытаюсь установить пакет mitmproxy через pip следующим образом:

$ 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
Никлас
источник
meta.askubuntu.com/questions/15739/… : я рекомендую обновить до 16.04.
anonymous2

Ответы:

79

Другие ответы только обращаются к зависимостям, чтобы ошибки, о которых вы упомянули, исчезли. Список всех необходимых зависимостей на самом деле намного длиннее.

Вы можете установить их все с помощью:

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

Источник: документация

grooveplex
источник
1
работал, но как-то убил пипс. Пришлось переустановить его. Теперь все работает. :)
Никлас
1
@Niklas Я рад слышать, что это решило твою проблему. Хорошего дня!
Grooveplex
66
»» fatal error: openssl/opensslv.h: No such file or directory ««

Установите openssl: sudo apt-get update && sudo apt-get install libssl-dev

Кнуд Ларсен
источник
Я получил ту же ошибку во время установки pyOpenSSL в Ubuntu 16.04 (внутри python virtualenv). Этот ответ решил мою проблему. Спасибо
yucer
исправлена ​​проблема при установке «pip install fabric» на сервер Ubuntu (stretch / sid или Ubuntu 16.04.1 LTS).
Сергей Г
1
Это простой чистый ответ для всего, что зависит от pypi.python.org/pypi/cryptography/1.8.1, например pypi.python.org/pypi/paramiko/2.1.2
Бруно Броноски
1
Сохранена ошибка при установке hashpumpy.
Нестандартная модель
У меня была аналогичная проблема , пытаясь установить keyringна alpine, но получил ERROR: unsatisfiable constraintsпри попытке установить libssl-dev. Был в состоянии решить это, установив openssl-devвместо этого.
Cowlinator
4

На самом деле в вашем выводе есть две разные проблемы (при условии, что все другие проблемы с зависимостями уже решены). Оба нужно исправить.

Отсутствующие библиотеки SSL

  1. Как сказал Кнуд Ларсен в своем ответе на этот вопрос , вам не хватает библиотек OpenSSL . Обратитесь к их ответу на этот вопрос для этой проблемы.

Отсутствующие модули Python

  1. Существует скрипт на python, который является частью того, что вы запускаете, и в нем отсутствует модуль (называемый configargparse), который ему нужен для запуска.

    Если вы используете Ubuntu 15.10 или новее , вы можете установить его, выполнив команду sudo apt-get install python-configargparse.

    Если вы используете какую-либо версию Ubuntu до 15.10, вам нужно будет установить ее через систему, pipчтобы загрузить и сделать ее доступной для системы:sudo pip install configargparse

    (Обратите внимание, что python pip install mitmproxyтот же тип разрешения зависимостей будет достигнут после того, как вы исправите проблему отсутствующих библиотек SSL, однако, если по какой-то причине это не нужно, вам придется вручную установить этот модуль)

ПРИМЕЧАНИЕ. В вашем вопросе указано, что вы используете Ubuntu MATE 15.10. Ubuntu 15.10 для всех вариантов вышла из EndOfLife 28 июля 2016 года. Вам следует рассмотреть возможность обновления до 16.04, чтобы получать постоянную поддержку и обновления Ubuntu.

Томас Уорд
источник