Я написал модуль Python на C ++ и построил его как общую библиотеку объектов, и он работал нормально. Но, разобравшись во всем этом, я заметил (через strace), что Python ищет несколько разных вариантов вызова import
. В частности, когда я говорю import foo
, Python выполняет поиск в следующем порядке:
Все это было довольно понятно, за исключением foomodule.so. Почему Python ищет все как name.so, так и namemodule.so? Это какой-то исторический артефакт? Я довольно много искал и не нашел никакого объяснения, и мне осталось только гадать, следует ли мне назвать свой модуль foomodule.so вместо foo.so. В моей системе, похоже, есть несколько существующих модулей Python, соответствующих каждому соглашению, поэтому я не могу не задаться вопросом, подразумевают ли что-то разные имена.