Comment corriger l'erreur « Une tentative d'importation relative a été effectuée à partir d'un non-package même s'il y a __init__.py »
P粉566048790
P粉566048790 2023-08-21 15:15:11
0
2
504
<p>J'essaie de suivre la PEP 328, en utilisant la structure de répertoires suivante : </p> <pre class="brush:php;toolbar:false;">pkg/ __init__.py Composants/ core.py __init__.py essais/ core_test.py __init__.py</pre> <p>Dans <code>core_test.py</code> j'ai l'instruction d'importation suivante</p> <pre class="brush:php;toolbar:false;">from ..components.core import GameLoopEvents</pre> <p>Cependant, lorsque j'exécute, j'obtiens l'erreur suivante : </p> <pre class="brush:php;toolbar:false;">tests$ python core_test.py Traceback (dernier appel le plus récent) : Fichier "core_test.py", ligne 3, dans <module> à partir de ..components.core importer GameLoopEvents ValueError : tentative d'importation relative dans un fichier non-package</pre> <p>J'ai trouvé "Le chemin relatif ne fonctionne pas même avec __init__.py" et "Importer un module à partir d'un chemin relatif" dans ma recherche, mais ils n'ont pas aidé. </p> <p>Y a-t-il quelque chose qui me manque ici ? </p>
P粉566048790
P粉566048790

répondre à tous(2)
P粉827121558

Pour développer la réponse de Ignacio Vazquez-Abrams :

Le mécanisme d'importation de Python est relatif au fichier actuel __name__。当直接执行一个文件时,它的名称不是通常的名称,而是使用"__main__" comme nom. Par conséquent, les importations relatives ne fonctionnent pas.

Comme Ignacio l'a suggéré, vous pouvez utiliser les attributs -m选项来执行它。如果你的包中有一部分是作为脚本运行的,你还可以使用__package__ pour indiquer quel nom le fichier doit avoir dans la hiérarchie des packages.

Voir http://www.python.org/dev/peps/pep-0366/ pour plus de détails.

P粉604507867

Oui. Vous ne l'utilisez pas comme package.

python -m pkg.tests.core_test
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal