La structure du répertoire des fichiers est la suivante :
daily
-- 20210504
permutations.py
__init__.py
__init__.py
Vous pouvez importer le permutations
module par __import__
o importlib.import_module
.
La documentation officielle recommande d'utiliser importlib.import_module
.
importar (name, globals=None, locals=None, fromlist=(), level=0) -> module
Importer un module. Comme cette fonction est destinée à être utilisée par l'interpréteur Python et non à un usage général, il est préférable de useimportlib.import_module()
pour importer un module de manière programmatique.
Quelle est la différence ?
Si elle est mise en œuvre en utilisant __import__
. Par exemple :
res = __import__('daily.20210504.permutations')
Le résultat de res est le module quotidien.
Donc, si vous voulez obtenir le permutations
vous devez fournir le paramètre fromlist, qui s'écrit comme suit.
res = __import__('daily.20210504.permutations', fromlist=('daily.20210504'))
Le résultat de res peut être vu maintenant comme C'est le bon résultat.
Et si j'utilise importlib.import_module
?
res = importlib.import_module('daily.20210504.permutations')
cela vous permet d'obtenir le permutations
directement.
17 votes
Pourquoi les gens disent-ils "cela me donne [une] erreur" et n'indiquent pas quelle est cette erreur ?
8 votes
@JohnZwinck C'est une erreur de syntaxe. Je suppose que c'est parce que "8puzzle" n'est pas un identifiant valide (il commence par un chiffre), et la syntaxe de l'instruction d'importation attend un identifiant Python à cet endroit. Ce qui rendrait la réponse "Non, vous ne pouvez pas. Renommez le module en quelque chose qui commence par une lettre ou un trait de soulignement."
0 votes
John a fait une bonne remarque, que je garderai à l'esprit. Et merci Abhijeet d'ajouter le message d'erreur pour moi. Merci.
2 votes
Renommer
8puzzle.py
apuzzle8.py
et utiliserimport puzzle8
.0 votes
Voir aussi stackoverflow.com/questions/6811902/
0 votes
Pour ceux qui se posent la question : un cas d'utilisation est d'avoir des noms de fichiers commençant par la date pour structurer un répertoire de scripts uniques (
20190911_test_foo.py
,20190911_test_bar.py
,20190911_some_class_used_for_foo_and_bar
).