"Фатальна помилка: 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.
анонімний2

Відповіді:


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

Джерело: документація


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). Ця відповідь вирішила мою проблему. Спасибі
Юсер

виправлена ​​проблема під час встановлення "pip install тканини" на сервер 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.
NonStandardModel

У мене була аналогічна проблема , намагаючись встановити keyringна alpine, але отримав ERROR: unsatisfiable constraintsпри спробі встановити libssl-dev. Вдалося вирішити це, встановивши openssl-devзамість цього.
ковбасник

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.