Saya memiliki modul python dengan tanda hubung di namanya, foo-bar.py
Mengubah nama modul adalah sesuatu yang saya lebih suka hindari karena modul dibagikan, dan saya harus mengejar semua tempat yang digunakan sehingga kasus khusus saya akan berfungsi.
Apakah ada cara untuk memuat modul yang namanya berisi '-' yang biasanya dilarang?
(Saya mengerti bahwa ini bukan praktik terbaik. Tetapi untuk situasi ini, saya memilih untuk tidak mendesain ulang dan menguji kumpulan aplikasi yang jauh lebih besar. Selain itu, saya rasa para pakar perusahaan saya tidak akan menyetujui saya meluangkan waktu untuk menerapkan perubahan seperti itu.)
foo-bar
s denganfoobar
atau apa pun? Seberapa sulit itu?Jawaban:
Anda bisa melakukannya dengan menggunakan
__import__()
. Sebagai contoh:foobar = __import__("foo-bar")
Tetapi Anda benar-benar harus mengganti nama modul sebagai gantinya. Dengan begitu, Anda dapat menghindari kebingungan di mana nama file modul berbeda dari pengenal yang digunakan dalam program.
sumber
Saya tahu pertanyaan ini telah dijawab untuk kepuasan penanya, tetapi berikut adalah jawaban lain yang saya percaya memiliki beberapa manfaat di atas
__import__()
.import importlib mod = importlib.import_module("path.to.my-module") # mod.yourmethod()
Menurut dokumen:
"This provides an implementation of import which is portable to any Python interpreter. This also provides an implementation which is easier to comprehend than one implemented in a programming language other than Python."
Python 2.7
+ sajasumber
Coba gunakan garis bawah, bukan tanda hubung.
impor pymysql_utils
bekerja untuk saya meskipun import pymysql-utils adalah nama modul yang digunakan oleh pip
sumber