cpython-35m-x86_64-linux-gnu.so генерируется из какого базового типа файла

Здесь есть несколько хороших ответов, которые обрабатывают эту ошибку в широком диапазоне. Я столкнулся с конкретной ситуацией с Spring Security, которая быстро, хотя, вероятно, и не была оптимальной, исправлена.

Во время авторизации пользователя (сразу после входа в систему и прохождения аутентификации) я тестировал пользовательский объект для определенного органа в пользовательском классе, который расширяет SimpleUrlAuthenticationSuccessHandler.

Мой пользовательский объект реализует UserDetails и имеет набор ленивых загруженных Ролей, которые бросали исключение «org.hibernate.LazyInitializationException», не могли инициализировать исключение прокси - без сеанса. Изменение этого набора из «fetch = FetchType.LAZY» на «fetch = FetchType.EAGER» исправило это для меня.

1
задан Stacey 3 March 2019 в 21:37
поделиться

1 ответ

Этот файл является расширением cpython (от обычного имени). В зависимости от используемых технологий, он может быть сгенерирован практически из любого типа файла с правильным набором инструментов, хотя чаще всего это расширение .c. Наиболее распространенными являются .cpp (для кода c ++) и .pyx (для модулей Cython). В качестве примера необычного типа файла, который может создавать расширения c, я написал setuptools-golang , который создает такие файлы из источника .go.

Вторая часть вашего вопроса - что означает каждая из этих частей расширения. Это изложено в PEP 3149 , хотя я объясню каждую часть здесь. Каждый разделен тире (-), я объясню каждый из них отдельно:

  • cpython: это «реализация». в данном случае это означает, что вы используете самую популярную реализацию python, которая реализована в C python / cpython . Другой пример «реализации», который вы можете увидеть здесь: pypy3 (для версии 3.x pypy)
  • 35m: это первая часть маркера «двоичный интерфейс приложения», в данном случае он говорит, что это python3.5, и m указывает, что python был скомпилирован с использованием pymalloc
  • x86_64: эта часть abi указывает, что он был скомпилирован для 64-битная архитектура, также известная как amd64
  • linux-gnu: это указывает на то, что совместно используемый объект предназначен для linux
0
ответ дан Anthony Sottile 3 March 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: