Di sebelah ncoghlan saya adalah pengelola lain sistem impor Python dan penulis penerapannya saat ini, importlib (http://docs.python.org/dev/py3k/library/importlib.html). Semua yang dikatakan Nick saya setujui, jadi saya hanya ingin menambahkan beberapa info tambahan.
Pertama, jangan terlalu mengandalkan PEP 302 secara langsung tetapi lihat apa yang importlib berikan dalam hal kelas dasar abstrak, dll. Untuk kompatibilitas mundur hal-hal harus kompatibel dengan PEP 302, tetapi saya harus menambahkan beberapa dari saya API sendiri untuk menyelesaikan penyempurnaan dukungan untuk fleksibilitas sejati.
Poin penting lainnya adalah Anda memberi pengembang dua fleksibilitas. Salah satunya adalah kemampuan untuk menyimpan kode dengan cara selain hanya langsung pada sistem file sebagai file individual (saya menyebutnya penyimpanan back-end untuk impor), mis. Ini memungkinkan kode untuk hidup dalam file zip, database sqlite, dll Dukungan lainnya adalah memungkinkan kontrol untuk kode pra atau pasca proses dalam beberapa cara, misalnya Quixote (https://www.mems-exchange.org/software/quixote/) dan penggunaan alternatif string literal yang tidak ditugaskan untuknya. suatu variabel akan jauh lebih mudah untuk didukung.
Sementara yang terakhir jarang diperlukan, yang pertama adalah di mana Anda harus khawatir tentang dukungan. Dan di sinilah Anda akhirnya mendefinisikan ulang API interaksi sistem file. Karena beberapa orang memerlukan aset yang disimpan sebagai file dengan kode mereka, Anda perlu menyediakan cara yang baik untuk membaca file, menemukan file, dll. Kita masih perlu mengimplementasikan bagian API untuk menemukan file data apa yang tersedia, mendaftar, dll. .
Tapi kemudian Anda juga membutuhkan API yang spesifik kode. Seperti yang disebutkan Nick, Anda pada akhirnya membutuhkan API untuk menemukan modul apa saja yang terkandung dalam paket, dll. Yang tidak khusus untuk file. Ada dualitas aneh memiliki API untuk berurusan dengan modul di mana Anda telah mengekstraksi konsep file, tetapi akhirnya Anda harus menyediakan API untuk mengakses data aset seperti file. Dan segera setelah Anda mencoba menerapkan satu dalam hal yang lain untuk menghindari duplikasi air menjadi benar-benar suram (yaitu orang akhirnya bergantung pada penataan jalur file yang diharapkan, dll. Tanpa memperhatikan fakta bahwa jalan tersebut mungkin bukan jalan yang benar karena ini untuk kode zip yang berisi dan bukan hanya file). TKI Anda pada akhirnya harus mengimplementasikan dua API serupa, tetapi Anda akan lebih baik dalam jangka panjang.
Seperti kata Nick, solusi kami adalah titik awal yang baik, tetapi bukan bagaimana saya akan melakukannya hari ini jika saya merancang API dari awal.