LINUX.ORG.RU

Проблема с Установкой библиотеки Grab на питоне 3.6

 , ,


0

2

Ув. Знатоки! Пожалуйста можете объяснить все тонкости установки библиотеки Grab на python 3.6. Ибо после двух дней пляски с бубном результат не утешительный. Всё жалуется на pycurl, и как на зло pycurl тоже не устанавливается . ОС - ubuntu 18 python 3.6


Установи pip env / virtual environment wrapper, переключись в виртуальное окружение, запусти установщик pip и пиши сюда что за ошибки.

menangen ★★★★★ ()
Ответ на: комментарий от oldstable

pip3 же, а не pip.

Это одно и то же. В Python 3 предоставляется pip как синоним для pip3, Python 2 в Ubuntu 18.04 отсутствует, а если поставить дополнительно, то не следует делать его версией Python-а по умолчанию.

Partisan ★★★ ()
Ответ на: комментарий от Partisan

Если делать установку через pıp Requirement already satisfied: grab in /usr/local/lib/python2.7/dist-packages Requirement already satisfied: six in /usr/lib/python2.7/dist-packages (from grab) Requirement already satisfied: selection in /usr/local/lib/python2.7/dist-packages (from grab) Requirement already satisfied: weblib>=0.1.28 in /usr/local/lib/python2.7/dist-packages (from grab) Requirement already satisfied: defusedxml in /usr/local/lib/python2.7/dist-packages (from grab) Requirement already satisfied: pycurl<7.43.0.2; platform_system != «Windows» in /usr/lib/python2.7/dist-packages (from grab) Requirement already satisfied: lxml; platform_system != «Windows» in /usr/local/lib/python2.7/dist-packages (from grab) Requirement already satisfied: user-agent in /usr/local/lib/python2.7/dist-packages (from grab) Requirement already satisfied: pytils in /usr/local/lib/python2.7/dist-packages (from weblib>=0.1.28->grab) ---------------------------------------------------------------- Если делать установку через pip3 то появляется следующее --------------------------------------------------------------- compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 Failed building wheel for pycurl Running setup.py clean for pycurl Failed to build pycurl Installing collected packages: pycurl, grab Running setup.py install for pycurl ... error Complete output from command /usr/bin/python3 -u -c «import setuptools, tokenize;__file__='/tmp/pip-build-oz4xwx17/pycurl/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))» install --record /tmp/pip-eovtccw7-record/install-record.txt --single-version-externally-managed --compile: Using curl-config (libcurl 7.58.0) running install running build running build_py creating build creating build/lib.linux-x86_64-3.6 creating build/lib.linux-x86_64-3.6/curl copying python/curl/__init__.py -> build/lib.linux-x86_64-3.6/curl running build_ext building 'pycurl' extension creating build/temp.linux-x86_64-3.6 creating build/temp.linux-x86_64-3.6/src x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fdebug-prefix-map=/build/python3.6-EKG1lX/python3.6-3.6.5=. -specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPYCURL_VERSION=«7.43.0.1» -DHAVE_CURL_OPENSSL=1 -DHAVE_CURL_SSL=1 -I/usr/include/python3.6m -c src/docstrings.c -o build/temp.linux-x86_64-3.6/src/docstrings.o In file included from src/docstrings.c:4:0: src/pycurl.h:164:13: fatal error: openssl/ssl.h: Нет такого файла или каталога # include <openssl/ssl.h> ^~~~~~~~~~~~~~~ compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- Command «/usr/bin/python3 -u -c „import setuptools, tokenize;__file__='/tmp/pip-build-oz4xwx17/pycurl/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))“ install --record /tmp/pip-eovtccw7-record/install-record.txt --single-version-externally-managed --compile» failed with error code 1 in /tmp/pip-build-oz4xwx17/pycurl/

============================================================== Такой интересный момент что при запуске программы через python name.py (import grab) программа не выдает ошибки . Если делать тоже самое через python3 то такой библиотеки нет в системе . Что не так ? Разжуйте пожалуйста мне. Чуть больше 3 месяцев пользуюсь убунту

leog ()
Ответ на: комментарий от leog
In file included from src/docstrings.c:4:0: src/pycurl.h:164:13: fatal error: openssl/ssl.h: Нет такого файла или каталога # include <openssl/ssl.h>

dev пакет для OpenSSL нужен

MadMax ()
Ответ на: комментарий от leog

Смогу только вечером дома сам посмотреть установку.

Partisan ★★★ ()
Ответ на: комментарий от Partisan

В Python 3 предоставляется pip как синоним для pip3, Python 2 в Ubuntu 18.04 отсутствует, а если поставить дополнительно, то не следует делать его версией Python-а по умолчанию.

Надо же, будущее наступило, а я и не знал.

oldstable ()
Ответ на: комментарий от leog

В общем, посмотрел. У вас путаница между Python 2.7 и 3.6. Хотя могут быть много уствовок Python-ов (в разных папках), но pip устанавливает пакеты только для своей установки Python-а (то есть, в папке которой он находится). В общем, надо знать, который Python сейчас нужен, и выбирать его. Использовать Python environment. У меня Python не оказалось, вопреки тому, что я писал. Это потому, что я недавно установил серверную версию Ubuntu 18.04 для изучения различий с обычной (примечание. Устанавливать серверную версию надо осторожно, так как может стереть имеющиеся разделы на диске, даже выбрать вариант создания новых разделов на пустом месте). Ну, поставил Python. Командой apt install python (не python3) установилась версия 2.7, сразу убрал её, так как пока не нужна. Для установки Python 3 выбрал популярный дистрибутив Python Anaconda (у него есть вариант для 2.7). Это стандартный Python, к которому прилагается много пакетов и программы для удобства.

Подаю команду pip install Grab (в Anaconda по возможности используют conda install, но из-за позднего времени я не стал проверять). Grab поставился, но с предупреждением о недостающем пакете: distributed 1.21.8 requires msgpack, which is not installed.

установил недостающий пакет msgpack: pip install msgpack

больше сообщений о недостающих пакетах не было (иногда приходится по несколько раз ставить по отдельности недостающие пакеты). Значит, Grab стоит, хотя для проверки можно было бы установить его повторно и убедиться, что сообщений об ошибках нет. А жалоба на нехватку openssl у меня не показывалась, так как openssl установился вместе с Anaconda. Иначе пришлось бы обойтись с ним, как с msgpack. В общем, надо быть внимательным - ставить пакеты в тот экземпляр Python-а, с которым предполагается работа, и если будут сообщения, что пакет зависит от нехватающих пакетов, то ставить их, после чего повторять установку зависимого пакета.

Partisan ★★★ ()
Ответ на: комментарий от Partisan

Хорошо... тогда как можете подсказать убрать нынешний питон 2.7 ? ибо если я правильно помню некие компоненты на убунте работают только с питоном 2.7.. и его снос может повредить работе ОС . Если не прав .. прошу тапками не кидаться .

leog ()
Ответ на: комментарий от leog

тогда как можете подсказать убрать нынешний питон 2.7 ?

Как ставили, так и убирать. Потому что по умолчанию его не должно быть. Но предполагаю, что

sudo apt remove python-2.7

Впрочем, можно и не убирать, только не путаться, какой именно Python используете.

Нельзя убирать тот Python, который ставится в составе Linux. В Ubuntu 18.04 это Python 3.6.5, а в серверной версии Ubuntu я не обнаружил никакого (но из-за позднего времени я уже плохо соображал). В серверной версии сначала устанавливается мало компонент. Но я провёл это испытание уже после установки Gnome 3 с прилагающимися к нему программами. В общем, перейти в папку bin того Python-а, который хотите использовать, и оттуда подать pip install. Посмотреть, на отсутствие каких пакетов пожалуется, и установить их. Если не повезёт и pip их не найдёт, то самостоятельно найти в интернете, списать в виде архива на свой ПК, и в pip install указать имя файла вместо имени пакета.

Partisan ★★★ ()
Ответ на: комментарий от menangen

В третьем питоне он встроенный.

$ python venv ~/.venvs/grab
$ . ~/.venvs/grab/activate
(grab) $ pip install Grab

Автору перед этим нужно выполнить:

$ sudo apt-get install libssl-dev
tz4678 ★★ ()
Ответ на: комментарий от Partisan

Похоже у меня руки и голова не с того места растут (((( У меня получилось удалить питон версии 2.7 с помощью команды remove python-minimal Немного не понял как перейти в папку конкретного питона , так как на убунте файлы одной программы расположены в разных под каталогах. я попробовал перейти в /usr/bin там запустил pip3 install grab и получил Вот это __________________________________________________________________________________________________________________________________ <pre>Complete output from command python setup.py egg_info: Traceback (most recent call last): File «/tmp/pip-install-kne9xixy/pycurl/setup.py», line 104, in configure_unix stdout=subprocess.PIPE, stderr=subprocess.PIPE) File «/usr/lib/python3.6/subprocess.py», line 709, in __init__ restore_signals, start_new_session) File «/usr/lib/python3.6/subprocess.py», line 1344, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'curl-config': 'curl-config' During handling of the above exception, another exception occurred: Traceback (most recent call last): File «<string>», line 1, in <module> File «/tmp/pip-install-kne9xixy/pycurl/setup.py», line 841, in <module> ext = get_extension(sys.argv, split_extension_source=split_extension_source) File «/tmp/pip-install-kne9xixy/pycurl/setup.py», line 508, in get_extension ext_config = ExtensionConfiguration(argv) File «/tmp/pip-install-kne9xixy/pycurl/setup.py», line 72, in __init__ self.configure() File «/tmp/pip-install-kne9xixy/pycurl/setup.py», line 108, in configure_unix raise ConfigurationError(msg) __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory: 'curl-config': 'curl-config' ---------------------------------------- <font color=«#CC0000»>Command «python setup.py egg_info» failed with error code 1 in /tmp/pip-install-kne9xixy/pycurl/</font> </pre> попробовал установить pycurle через pip3 __________________________________________________________________________________________________________________________________ Using cached https://files.pythonhosted.org/packages/e8/e4/0dbb8735407189f00b33d84122b9be5... Complete output from command python setup.py egg_info: Traceback (most recent call last): File «/tmp/pip-install-037gibgx/pycurl/setup.py», line 223, in configure_unix stdout=subprocess.PIPE, stderr=subprocess.PIPE) File «/usr/lib/python3.6/subprocess.py», line 709, in __init__ restore_signals, start_new_session) File «/usr/lib/python3.6/subprocess.py», line 1344, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'curl-config': 'curl-config' During handling of the above exception, another exception occurred: Traceback (most recent call last): File «<string>», line 1, in <module> File «/tmp/pip-install-037gibgx/pycurl/setup.py», line 913, in <module> ext = get_extension(sys.argv, split_extension_source=split_extension_source) File «/tmp/pip-install-037gibgx/pycurl/setup.py», line 582, in get_extension ext_config = ExtensionConfiguration(argv) File «/tmp/pip-install-037gibgx/pycurl/setup.py», line 99, in __init__ self.configure() File «/tmp/pip-install-037gibgx/pycurl/setup.py», line 227, in configure_unix raise ConfigurationError(msg) __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory: 'curl-config': 'curl-config' ---------------------------------------- Command «python setup.py egg_info» failed with error code 1 in /tmp/pip-install-037gibgx/pycurl/ __________________________________________________________________________________________________________________________________ после поставил Анаконду попробовал через неё __________________________________________________________________________________________________________________________________ conda install -c auto grab Solving environment: failed

UnsatisfiableError: The following specifications were found to be in conflict: - anaconda==5.2.0=py36_3 - grab Use «conda info <package>» to see the dependencies for each package. Спасибо за терпение ) Надеюсь на вашу Помощь !!!

leog ()
Ответ на: комментарий от tz4678

Я выполнил apt-get install libssl-dev Но после ввода python venv ~/.venvs/grab получаю сообщения что не получается открыть каталог . А если прописываю все в одну строку получаю синтаксическую ошибку на скобке ( Прошу разжевать

leog ()
Ответ на: комментарий от leog

Немного не понял как перейти в папку конкретного питона

имелась ввиду его папка bin. Все эти папки можно найти как which python3, в показанных результатах выбрать пути к bin (их может быть несколько, если Python-ов несколько). Перейдя в папку bin, проверить версию Python-а как: ./python -V (здесь ./ чтобы выполнялась команда из текущей папки, а не найденная где-нибудь в пути поиска). Также для уверенности можно из текущей папки подавать ./pip Ваши сообщения об ошибках вызывают подозрение, что у вас всё ещё есть путаница между версиями Python-а. Проверьте, нет ли другого Python-а в пути поиска командой echo $PATH

Задание «виртуального окружения» с помощью venv не делайте, пока не ознакомитесь с его описанием (https://habr.com/post/157287/). Для начала можно обойтись, хотя потом надо будет научиться применять. И вообще в Anaconda свой метод для этого: https://conda.io/docs/user-guide/tasks/manage-environments.html

В общем, сейчас из-за позднего времени я уже плохо соображаю, но какая-то путаница между версиями Python-а возможна. Другие версии можно пока не удалять, если затрудняетесь, а нужную версию можно использовать, подавая команды из её текущей папки bin, как я только что описал.

Partisan ★★★ ()
Ответ на: комментарий от Partisan

Боже, до чего же ты косноязычен.

anonymous ()
Ответ на: комментарий от leog

или изучите, как пользоваться venv (поиском в Google по словам python venv) или пока не пользуйтесь. Трудно рассчитывать на успех, делая непонятно что.

Partisan ★★★ ()
Ответ на: комментарий от leog

Да, напомню, что в Anaconda свой способ задания virtual environment (рабочей среды Python-а). Я подумал, что у вас наверно путаница между несколькими Python-ами и вы возможно затрудняетесь найти и удалить лишние, а virtual environment помогате устранить путаницу. В google много объяснений про virtual environment в Anaconda. Вот вроде простое:

https://uoa-eresearch.github.io/eresearch-cookbook/recipe/2014/11/20/conda/

(найти все версии Python-а и с помощью virtual environment задать использование нужной, после чего добавлять в неё модули). Только если по conda install нужный вам модуль не будет найден, то применять pip install не выходя из virtual environment.

Ещё посмотрите, не задан ли какой-нибудь Python в пути поиска (командой echo $PATH). Если задан, то уберите оттуда во избежание случайного использования другого экземпляра Python-а.

Partisan ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.