Sto eseguendo una shell Python interattiva e sto provando a vedere il percorso da cui viene importato un modulo usando il modulo 'inspect'. I moduli che sto cercando di importare hanno wrapper Python attorno alle API C++ che usano SWIG.Come sono importati i moduli Python (che sono librerie condivise) senza un file .py?
Il seguente frammento mostra i miei passi:
>>> import os
>>> import inspect
>>>
>>> import db
>>> inspect.getfile(db)
'mypath1/lib/db/db.pyc'
>>>
>>> import dart
>>> inspect.getfile(dart)
'mypath2/lib/dart.so'
>>>
mio PYTHONPATH
contiene sia mypath1/lib/db
e mypath2/lib
.
ho avuto l'impressione che, al fine di essere in grado di caricare i moduli, l'interprete ha bisogno di accedere a un file .py
che poi chiama imp.load_module
per caricare la libreria condivisa necessaria (.so
file). Questo è ciò che vedo nel caso del modulo db
che ha un file sotto mypath1/lib/db
. Tuttavia, dart
non ha un file .py
sotto mypath2/lib
.
È possibile importare un modulo senza il file .py come accade nel caso del modulo dart
?