Ошибка при попытке установить mod_wsgi с помощью pip

Вопрос или проблема

Когда я пытаюсь установить mod_wsgi с помощью pip следующим образом:

pip install mod_wsgi

Я получаю следующую ошибку:

4m.so -L/usr/local/lib -L/usr/local/lib/python3.4/config-3.4m
-lpython3.4m
/bin/ld: /usr/local/lib/libpython3.4m.a(abstract.o): перемещение R_X86_64_32S против `_Py_NotImplementedStruct’ не может быть использовано при
создании общего объекта; перекомпилируйте с -fPIC
/usr/local/lib/libpython3.4m.a: ошибка добавления символов: Неверное значение
collect2: ошибка: ld вернул код выхода 1
ошибка: команда ‘gcc’ завершилась с кодом выхода 1

Команда “/usr/local/virtualenvironment/bin/python3 -u -c “import
setuptools,
tokenize;file=’/tmp/pip-install-dgfnrl36/mod-wsgi/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-record-m7uwmjt6/install-record.txt –single-version-externally-managed –compile –install-headers /usr/local/virtualenvironment/include/site/python3.4/mod-wsgi” завершилась
с кодом ошибки 1 в /tmp/pip-install-dgfnrl36/mod-wsgi/

Я использую Python 3.4.3. Я даже пытался собрать mod_wsgi из исходников и в целом получаю ту же ошибку.

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

Решением, которое сработало для меня, было собрать mod_wsgi из исходников после установки библиотек разработки Python.

Итак,

yum install python3-devel
  1. Скачайте желаемую версию mod_wsgi с http://modwsgi.readthedocs.io/en/develop/
  2. Распакуйте исходники и перейдите в распакованную папку исходников
  3. Выполните следующую команду ./configure --with-python=/path/to/python/executable
  4. make
  5. make install

Я предпочитаю устанавливать модуль в своей виртуальной среде. Вы получили эту ошибку, потому что не установили Python с параметром –enable-shared. Вот ссылка, в которой упоминается эта проблема
https://groups.google.com/forum/#!topic/modwsgi/S9D2cTefj4k

А вот ссылка, которая покажет, как установить Python из исходного кода как общую библиотеку

https://danieleriksson.net/2017/02/08/how-to-install-latest-python-on-centos/

.

Ответ или решение

Ошибка при установке mod_wsgi с помощью pip является распространенной проблемой, с которой сталкиваются многие разработчики. В данном случае ошибка указывает на неправильные параметры сборки Python, что приводит к проблемам с компиляцией.

Описание проблемы

При выполнении команды pip install mod_wsgi вы получаете следующую ошибку:

/bin/ld: /usr/local/lib/libpython3.4m.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC
error: command 'gcc' failed with exit status 1

Данная ошибка говорит о том, что вы используете библиотеку статической компиляции Python (libpython3.4m.a), которая не поддерживает необходимые вам флаги для создания совместимого с динамической компиляцией объекта.

Причины ошибки

  1. Отсутствие поддержки динамической компиляции: Python был скомпилирован без использования параметра --enable-shared, что приводит к проблемам при компиляции расширений, таких как модуль mod_wsgi.

  2. Отсутствие библиотек разработки: Часто подобные ошибки возникают, если не установлены необходимые библиотеки разработки, которые требуются для сборки модулей.

Решение проблемы

Ваша проблема может быть решена несколькими способами:

  1. Установка библиотек разработки для Python:
    Установите необходимые библиотеки с помощью следующей команды:

    yum install python3-devel
  2. Компиляция Python с поддержкой динамических библиотек:
    Если у вас уже есть установленная версия Python, но она не поддерживает динамическую компиляцию, вам нужно будет переустановить Python с параметром --enable-shared.

    Для этого выполните следующие шаги:

    1. Скачайте исходный код Python с официального сайта.

    2. Распакуйте архив и перейдите в каталог с исходным кодом.

    3. Выполните команду конфигурации с включением поддержки динамических библиотек:

      ./configure --enable-shared
    4. Затем выполните:

      make
      make install
  3. Установка mod_wsgi из исходников:
    Если после выполнения вышеуказанных шагов проблема не решается, вы можете попробовать установить mod_wsgi из исходников:

    1. Загрузите нужную версию mod_wsgi с официального сайта.
    2. Распакуйте архив и перейдите в распакованный каталог.
    3. Выполните команды:

      ./configure --with-python=/path/to/python/executable
      make
      make install

Рекомендации

  • Убедитесь, что все зависимости установлены перед компиляцией.
  • Используйте виртуальные окружения для изоляции проектов, чтобы избежать конфликтов между модулями.
  • После исправления конфигурации и установки убедитесь, что все работает корректно, проверив настройки вашего веб-сервера и конфигурацию WSGI.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...