LINUX.ORG.RU

CentOS 6.9 + mysql-devel + Python 3.8

 , , ,


0

1

На VPS сервере CentOS 6.9 уже есть работающий сайт на php5.3 с базой mysql. Задача в том, создать API на python 3.8 (Django REST Framework) с существующей базой. При выполнении в виртуальном окружении

pip install  mysqlclient 

выходит ошибка

Collecting mysqlclient
  Using cached mysqlclient-1.4.6.tar.gz (85 kB)
    ERROR: Command errored out with exit status 1:
     command: /var/www/.../data/envs/ltenv/bin/python3.8 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-iiw8pz5_/mysqlclient/setup.py'"'"'; __file__='"'"'/tmp/pip-install-iiw8pz5_/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-iiw8pz5_/mysqlclient/pip-egg-info
         cwd: /tmp/pip-install-iiw8pz5_/mysqlclient/
    Complete output (12 lines):
    /bin/sh: mysql_config: command not found
    /bin/sh: mariadb_config: command not found
    /bin/sh: mysql_config: command not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-iiw8pz5_/mysqlclient/setup.py", line 16, in <module>
        metadata, options = get_config()
      File "/tmp/pip-install-iiw8pz5_/mysqlclient/setup_posix.py", line 61, in get_config
        libs = mysql_config("libs")
      File "/tmp/pip-install-iiw8pz5_/mysqlclient/setup_posix.py", line 29, in mysql_config
        raise EnvironmentError("%s not found" % (_mysql_config_path,))
    OSError: mysql_config not found
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Техподдержка сказала, что необходим пакет mysql-devel. Самое главное, чтобы при настройке работающй сайт не упал, т.к. там интернет-магазин, будет очень плохо

Подскажите какую функцию выполняет пакет mysql-devel? Нужно ли его устанавливать в специальную папку глобально в CentOS и прописывать путь к ней в переменной окружения или через yum он сам встанет куда надо и mysqlclient установится и будет работать автоматически или его надо устанавливать через pip?

Подскажите какую функцию выполняет пакет mysql-devel?

Там всякие "библиотеки", используя которые будет собрана нужная python-обертка. Вы можете их ставить без опаски, они никак не повлияют на работающий сервер.

Нужно ли его устанавливать в специальную папку глобально в CentOS и прописывать путь к ней в переменной окружения или через yum он сам встанет куда надо и mysqlclient установится и будет работать автоматически или его надо устанавливать через pip?

Ставите через пакетный менеджер как обычный пакет и все будет работать. mysqlclient нужно устанавливать вручную, или посмотрите пакет типа python3-mysqldb (не знаю как он в rpm-based будет называться).

Вообще у вас странное окружение - древний пхп, старый центос и вы при этом пытаетесь вкатить туда питон, вышедший пол года назад. Очень вероятно что наткнетесь на какие-то связанные с жизненным циклом вашей инфратруктуры проблемы.

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

Вообще у вас странное окружение - древний пхп, старый центос и вы при этом пытаетесь вкатить туда питон, вышедший пол года назад. Очень вероятно что наткнетесь на какие-то связанные с жизненным циклом вашей инфратруктуры проблемы.

согласен, я тоже об это говорю директору. Планируем скоро переехать на новый сервер.

fof_fa ()

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

Не будет. Если бы в такой ситуации было бы плохо, то твой директор уже волосы на жопе рвал бы без запасного сервера и «плана Б». А раз ему нормально и он не чешется, значит на простои ему начхать и ты-то тем более можешь не переживать.

no-such-file ★★★★★ ()
Ответ на: комментарий от PunkoIvan

раз директор должен знать про запасной сервер

А водитель не должен знать про запасное колесо, ага. Покажи мне такого тупого «директора»? Технические подробности знать не обязательно, но чуйка у человека должна быть. Иначе как он бизнес делает? Примерно первый попавшийся разраб скажет директору, что нужен тестовый сервер, ну или хоть какие-то меры на случай проблем.

no-such-file ★★★★★ ()
Ответ на: комментарий от micronekodesu

установил mysql-devel

yum install mysql-devel
...
================================================================================
 Package             Arch           Version                  Repository    Size
================================================================================
Installing:
 mysql-devel         x86_64         5.1.73-8.el6_8           base         130 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 130 k
Installed size: 388 k
Is this ok [y/N]: y
Downloading Packages:
mysql-devel-5.1.73-8.el6_8.x86_64.rpm                    | 130 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : mysql-devel-5.1.73-8.el6_8.x86_64                            1/1 
  Verifying  : mysql-devel-5.1.73-8.el6_8.x86_64                            1/1 

Installed:
  mysql-devel.x86_64 0:5.1.73-8.el6_8                                           

Complete!

при сборке mysqlclient ошибка не исчезла:

pip install mysqlclient
Collecting mysqlclient
  Using cached mysqlclient-1.4.6.tar.gz (85 kB)
    ERROR: Command errored out with exit status 1:
     command: /var/www/.../data/envs/ltenv/bin/python3.8 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-fp8q_q0w/mysqlclient/setup.py'"'"'; __file__='"'"'/tmp/pip-install-fp8q_q0w/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-fp8q_q0w/mysqlclient/pip-egg-info
         cwd: /tmp/pip-install-fp8q_q0w/mysqlclient/
    Complete output (12 lines):
    /bin/sh: mysql_config: command not found
    /bin/sh: mariadb_config: command not found
    /bin/sh: mysql_config: command not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-fp8q_q0w/mysqlclient/setup.py", line 16, in <module>
        metadata, options = get_config()
      File "/tmp/pip-install-fp8q_q0w/mysqlclient/setup_posix.py", line 61, in get_config
        libs = mysql_config("libs")
      File "/tmp/pip-install-fp8q_q0w/mysqlclient/setup_posix.py", line 29, in mysql_config
        raise EnvironmentError("%s not found" % (_mysql_config_path,))
    OSError: mysql_config not found
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

как решить?

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

ну дибилоида-админа же нанял, значит и про бэкап подумать должен.

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

Проверьте для начала что действительно тот пакет поставили. Эта команда покажет пакеты, в которых есть mysql_config:

yum provides mysql_config

Проверяете что нужное установлено, проверяете что бинарь действительно есть в системе и что его можно запустить.

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

Спасибо за поддержку) Проблему с настройкой решил установкой pymysql (альтернатива mysqlclient):

pip install pymysql

далее в файле init.py прописал

import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()

Все заработало)

fof_fa ()

Может быть более правильным решением бы было установить этот api сервис в docker-контейнер питона 3.8?

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