в виртуальной среде python команда mariadb_config не найдена, без виртуальной среды она работает?

#python #mysql #pycharm #mariadb #fedora

#python #mysql #pycharm #mariadb #fedora

Вопрос:

Я использую Fedora 32 WS, система недавно установлена.Я хочу разрабатывать с помощью PyCharm, я установил его через Flathub. У меня также есть NAS Synology с базой данных MariaDB, которую я хотел бы использовать в своей среде разработки. С рабочей средой Mysql это работает. Но если я запускаю новый проект в PyCharm с Python 3.8 и virtualenv и хочу установить mariadb pip install mariadb , я получаю ошибки:

 Collecting mariadb
  Using cached mariadb-1.0.4.tar.gz (66 kB)

DEPRECATION: The -b/--build/--build-dir/--build-directory option is deprecated. pip 20.3 will remove support for this functionality. A possible replacement is use the TMPDIR/TEMP/TMP environment variable, possibly combined with --no-clean. You can find discussion regarding this at https://github.com/pypa/pip/issues/8333.
    ERROR: Command errored out with exit status 1:
     command: /home/jonathan/PycharmProjects/RSSDB/venv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pycharm-packaging/mariadb/setup.py'"'"'; __file__='"'"'/tmp/pycharm-packaging/mariadb/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-dzg8lim2
         cwd: /tmp/pycharm-packaging/mariadb/
    Complete output (17 lines):
    /bin/sh: mariadb_config: Command not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pycharm-packaging/mariadb/setup.py", line 26, in <module>
        cfg = get_config(options)
      File "/tmp/pycharm-packaging/mariadb/mariadb_posix.py", line 59, in get_config
        cc_version = mariadb_config(config_prg, "cc_version")
      File "/tmp/pycharm-packaging/mariadb/mariadb_posix.py", line 28, in mariadb_config
        raise EnvironmentError(
    OSError: mariadb_config not found.
    
    Please make sure, that MariaDB Connector/C is installed on your system.
    Either set the environment variable MARIADB_CONFIG or edit the configuration
    file 'site.cfg' and set the 'mariadb_config option, which should point
    to the mariadb_config utility.
    The MariaDB Download website at <https://downloads.mariadb.com/Connectors/c/>
    provides latest stable releease of Connector/C.
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  

Если я просто выполняю команду pip install mariadb в своем локальном терминале, ошибок нет, поэтому мне кажется, что в виртуальной среде чего-то не хватает.
У кого-нибудь есть идея?

Ответ №1:

Выполните следующую команду до и после активации виртуальной среды

 which mariadb_config
  

Возможно, активация virtual env удаляет каталог из ПУТИ при его активации.

Если оба сообщают, что они найдены и местоположение одинаковы, тогда проверьте, что

 head -1 $(which mariadb_config)
  

Если mariadb_config является скриптом python, возможно, у него есть проблемы, и вы получаете ошибку «не найдено» при запуске внутри виртуальной среды..

Редактировать

Согласно источнику здесь: https://github.com/mariadb-corporation/mariadb-connector-python/blob/master/mariadb_posix.py#L49

«Самым простым» исправлением было бы:

 export MARIADB_CONFIG=/usr/bin/mariadb_config
pip install mariadb
  

Комментарии:

1. большое вам спасибо за быстрый ответ. mariadb_config, похоже, не является скриптом python. ее невозможно открыть для чтения с помощью текстового редактора. Местные новости: [jonathan@linux ~]$ which mariadb_config /usr/bin/mariadb_config В виртуальной среде: (venv) which mariadb_config which: no mariadb_config in ...

2. Странно, то, что вы описываете, похоже на то, что /usr/bin будет удален из PATH при активации venv.. Вы могли бы попробовать PATH=${PATH}:/usr/bin pip install mariadb

3. И, глядя на имена путей, кажется, что это может быть вызвано Pycharm.. Может быть, есть настройки, позволяющие системным путям оставаться в PATH или что-то в этом роде… Никогда не использовал pycharm

4. Да, смотрите мою правку.. Это выглядит так: если при установке пакета mariadb у вас не установлена переменная среды MARIADB_CONFIG, по умолчанию она будет /usr/local/bin/mariadb_config, но в соответствии с вашим выводом, он фактически находится в /usr/bin/ .. Звучит как небольшая ошибка в их упаковке python..

5. действительно большое спасибо, это решает проблему, но есть новая напрямую. Моя среда в PyCharm использует /usr/sbin/ , но файл mariadb_config находится там /usr/bin/ , где он должен быть. Конечно, все это работает, если я использую export для указания другого пути, но это нормально или это ошибка? /usr/bin/ в среде Pycharm = /usr/sbin/ в моем локальном хранилище. Мне это кажется немного подозрительным.