J'ai un fichier exécutable, nommé, par exemple, resource.py
. Il est disposé dans le dossier nommé resource
. Renommer un fichier ou un dossier est inacceptable - il s'agit d'un ancien produit et les utilisateurs habitués à utiliser une telle dénomination. À l'ancienne version, c'était sous un autre projet, donc les importations ressemblent à import main_product.resource.<..>
. Maintenant, je dois utiliser des importations comme import resource.<..>
et __import__('resource.<..>', ...)
. Ensuite, je l'essaie, j'obtiens une erreur attendue, car Python essaie d'importer d'abord à partir du fichier resource.py
.Importer depuis un module avec le même nom qu'un fichier exécutable en Python
solutions Suggestion:
- chemin supprimer du dossier en cours de
sys.path
:- nous avons besoin d'un morceau laid de code au début du fichier;
- aucune importation relative ne sera disponible dans ce dossier;
- chemin du dossier de vente à la fin
sys.path
liste:- plus grand morceau de code laid au début du fichier;
- Je ne suis pas sûr que cette fonctionnalité fonctionnera toujours parfaitement.
une idée utile à ce sujet?
P.S. v2.6 Python, FreeBSD 7.3
On ne sait pas de votre question quels noms doivent exactement rester inchangés, et pourquoi vous pouvez » t renommer les modules mais conserver les mêmes exécutables. Avez-vous envisagé d'utiliser "import XXX comme ressource", ou d'essayer de refactoriser les modules dans un paquet? –
** Renommer les modules ** fonctionne beaucoup mieux que de déconner avec ces deux "solutions" –