Acabamos de ter o mesmo problema. Usando as informações fornecidas neste tópico, consegui ir mais longe.
Eu usei apt source python2.7 e debuild -b -uc -us para inspecionar em detalhes como o pacote oficial foi criado. A implementação de imp.get_suffixes() está em Python / import.c: 2940 imp_get_suffixes(...) , que lê sufixos da lista chamada _PyImport_Filetab . Essa lista, por sua vez, é basicamente _PyImport_DynLoadFiletab e _PyImport_StandardFiletab concatenada.
Tornou-se óbvio que _PyImport_DynLoadFiletab é o que deveríamos estar procurando, e sua definição varia para diferentes plataformas - elas estão em Python / dynload _ *. c. Em Python / dynload_shlib.c é:
const struct filedescr _PyImport_DynLoadFiletab[] = {
#ifdef __CYGWIN__
{".dll", "rb", C_EXTENSION},
{"module.dll", "rb", C_EXTENSION},
#else
#if defined(PYOS_OS2) && defined(PYCC_GCC)
{".pyd", "rb", C_EXTENSION},
{".dll", "rb", C_EXTENSION},
#else
#ifdef __VMS
{".exe", "rb", C_EXTENSION},
{".EXE", "rb", C_EXTENSION},
{"module.exe", "rb", C_EXTENSION},
{"MODULE.EXE", "rb", C_EXTENSION},
#else
#ifdef Py_DEBUG
{"_d.so", "rb", C_EXTENSION},
{"module_d.so", "rb", C_EXTENSION},
# ifdef MULTIARCH
{"." MULTIARCH "_d.so", "rb", C_EXTENSION},
# endif
#endif
#ifdef MULTIARCH
{"." MULTIARCH ".so", "rb", C_EXTENSION},
#endif
{".so", "rb", C_EXTENSION},
{"module.so", "rb", C_EXTENSION},
#endif
#endif
#endif
{0, 0}
};
Está bem aqui: MULTIARCH , se você olhar o log de criação, será "x86_64-linux-gnu" (com aspas, por causa do - s). O valor é aparentemente de dpkg-architecture -qDEB_HOST_MULTIARCH , mas não verifiquei.
Mais importante, _PyImport_DynLoadFiletab não se parece com isso originalmente em dynload_shlib.c, foi corrigido. Portanto, para obter o mesmo comportamento, é necessário aplicar um patch, pelo menos, adicionar a parte {"." MULTIARCH ".so", ...} . No meu caso, o patch deste arquivo (dynload_shlib.c) parece suficiente.