Ошибка компиляции при импорте theano в ubuntu

avatar
erickorsi
1 июля 2021 в 20:26
175
1
1

Я пытаюсь запустить файл Python (.py) на сервере Linux с Ubuntu. Я создал виртуальную среду с python3.8 -m venv env_name и установил theano, который является зависимостью для файла. Я использовал pip3 install theano=="1.0.5" в виртуальной среде, и он установился нормально. Однако при попытке импортировать пакет я получил следующую ошибку:

raise Exception('Compilation failed (return status=%s): %s' %
Exception: Compilation failed (return status=1): /usr/bin/ld: /usr/local/lib/libpython3.8.a(abstract.o): relocation R_X86_64_PC32 against symbol `PyObject_SetItem' can not be used when making a shared object; recompile with -fPIC. /usr/bin/ld: final link failed: Bad value. collect2: error: ld returned 1 exit status.

Причина, по которой я использую theano==1.0.5, заключается в том, что структура кода, которую я использую, отлично работает в Windows 10 с этой версией и для Python 3.8.

Как устранить эту ошибку и импортировать theano?

Редактировать: Полная трассировка сообщения об ошибке при выполнении import theano:

Traceback (most recent call last):
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/gof/lazylinker_c.py", line 76, in <module>
    raise ImportError(
ImportError: Version check of the existing lazylinker compiled file. Looking for version 0.211, but found None. Extra debug information: force_compile=False, _need_reload=True

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/gof/lazylinker_c.py", line 99, in <module>
    raise ImportError(
ImportError: Version check of the existing lazylinker compiled file. Looking for version 0.211, but found None. Extra debug information: force_compile=False, _need_reload=True

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/__init__.py", line 110, in <module>
    from theano.compile import (
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/compile/__init__.py", line 12, in <module>
    from theano.compile.mode import *
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/compile/mode.py", line 11, in <module>
    import theano.gof.vm
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/gof/vm.py", line 674, in <module>
    from . import lazylinker_c
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/gof/lazylinker_c.py", line 139, in <module>
    cmodule.GCC_compiler.compile_str(dirname, code, location=loc,
  File "/home/Automatizacao/vxdex/vxdex_env/lib/python3.8/site-packages/theano/gof/cmodule.py", line 2410, in compile_str
    raise Exception('Compilation failed (return status=%s): %s' %
Exception: Compilation failed (return status=1): /usr/bin/ld: /usr/local/lib/libpython3.8.a(abstract.o): relocation R_X86_64_PC32 against symbol `PyObject_SetItem' can not be used when making a shared object; recompile with -fPIC. /usr/bin/ld: final link failed: Bad value. collect2: error: ld returned 1 exit status.
Источник
martineau
1 июля 2021 в 21:31
0

Судя по сообщению об ошибке, вы пытались создать theano, а не импортировать его.

erickorsi
2 июля 2021 в 13:50
1

Ну, эта ошибка возникает, когда я запускаю import theano.

martineau
2 июля 2021 в 16:16
0

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

Ответы (1)

avatar
Jason
21 октября 2021 в 15:43
0

Ваша ошибка говорит о том, что theano не может найти версию lazylinker в вашей системе. sudo apt-get install python3-dev на вашем сервере Ubuntu, чтобы установить этот и другие заголовочные файлы разработки, которые нужны theano.