Как исправить ошибки при компиляции Python 3.2.0 - PullRequest
2 голосов
/ 10 ноября 2019

Я пытаюсь создать виртуальную среду Python-3.2.0 для обновления моего инструмента. Инструмент был ранее собран с версией 2.7.15. Теперь я хочу обновить его до Python-3.2.0

Вот шаги, которые я выполнил на Cent-OS:

(a) Загрузите исходный код Python из официального репозитория cd /tmp wget https://www.python.org/ftp/python/3.2/Python-3.2.tgz tar -xvf Python-3.2 cd Python-3.2

(b) Компилировать Python с необходимыми флагами ./configure --enable-optimizations --enable-shared - prefix =/ opt / python LDFLAGS = -Wl, -rpath = / opt / python / lib sudo make install

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

/usr/bin/install -c python-config /opt/python/bin/python3.2m-config
    rm python-config
    LD_LIBRARY_PATH=/tmp/Python-3.2: ./python -E ./setup.py install \
            --prefix=/opt/python \
            --install-scripts=/opt/python/bin \
            --install-platlib=/opt/python/lib/python3.2/lib-dynload \
            --root=/
    running install
    running build
    running build_ext
    building dbm using ndbm
    INFO: Can't locate Tcl/Tk libs and/or headers
    building '_dbm' extension
    gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_NDBM_H -IInclude -I/opt/python/include -I. -I./Include -I/usr/local/include -I/tmp/Python-3.2 -c /tmp/Python-3.2/Modules/_dbmmodule.c -o build/temp.linux-x86_64-3.2/tmp/Python-3.2/Modules/_dbmmodule.o
I   n file included from Include/Python.h:111:0,
                    from /tmp/Python-3.2/Modules/_dbmmodule.c:6:
    Include/modsupport.h:27:1: warning: ‘_PyArg_ParseTuple_SizeT’ is an unrecognized format function type [-Wformat=]
    PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...) Py_FORMAT_PARSETUPLE(PyArg_ParseTuple, 2, 3);
    ^
    gcc -pthread -shared -Wl,-rpath=/opt/python/lib build/temp.linux-x86_64-3.2/tmp/Python-3.2/Modules/_dbmmodule.o -L. -L/opt/python/lib -L/usr/local/lib -lpython3.2m -o build/lib.linux-x86_64-3.2/_dbm.cpython-32m.so
    *** WARNING: renaming "_dbm" since importing it failed: build/lib.linux-x86_64-3.2/_dbm.cpython-32m.so: undefined symbol: dbm_nextkey

    Python build finished, but the necessary bits to build these modules were not found:
    _tkinter           bz2                ossaudiodev
    To find the necessary bits, look in setup.py in detect_modules() for the module's name.


    Failed to build these modules:
    _dbm

    running build_scripts
    copying and adjusting /tmp/Python-3.2/Tools/scripts/pydoc3 -> build/scripts-3.2
    copying and adjusting /tmp/Python-3.2/Tools/scripts/idle3 -> build/scripts-3.2
    copying and adjusting /tmp/Python-3.2/Tools/scripts/2to3 -> build/scripts-3.2
    changing mode of build/scripts-3.2/pydoc3 from 644 to 755

1 Ответ

1 голос
/ 10 ноября 2019

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

Итак:

  1. Вы пытаетесь «обновить» версию, которая выходит из поддержки в конце года (вашособый аромат ( v2.7. 15 ), выпущенный в прошлом году) до версии , которая была мертва в течение нескольких лет

  2. Подробнее: вы пытаетесь v3.2. 0 , что является 1 st одним из этой серии

Быстрый поиск вашей обнаруженной ошибки:

Теперь, это может или не может быть причиной в вашем случае. Если это так, то есть исправление, но вы не получите от него пользы из-за # 2. .

Пара идей:

  • Как правило, версия серии программного обеспечения 1 st , скорее всего, содержит больше ошибок, потому что она не была проверена "в реальном мире" (так как она не была выпущена)все же). Вероятность того, что что-то пойдет не так, возрастает, если поверх него установлено другое программное обеспечение (в этом случае другие Python 3 rd -party модули). В качестве примера (хотя и не относящегося к текущему сценарию), вы можете проверить [SO]: PyWin32 и Python 3.8.0
  • Вы должны использовать ( Python ) поддерживаемая и поддерживаемая версия (например, v3.8 или v3.7 ), чтобы вы могли иметь реальный шансполучения помощи при возникновении проблем
  • Если по каким-то причинам (которые я не могу найти логичными) вам нужно придерживаться v3.2 , попробуйте хотя бы последнюю версию ( [Python]: Python-3.2.6.tgz )
...