Соглашение об именах модулей общих объектов Python

Я написал модуль Python на C ++ и построил его как общую библиотеку объектов, и он работал нормально. Но, разобравшись во всем этом, я заметил (через strace), что Python ищет несколько разных вариантов вызова import . В частности, когда я говорю import foo , Python выполняет поиск в следующем порядке:

  • foo (каталог)
  • foo.so
  • foomodule.so
  • foo.py
  • foo.pyc

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

19
задан John Zwinck 12 June 2011 в 00:51
поделиться