2010-08-02 8 views
0

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:

  1. 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;
  2. 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

+1

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? –

+0

** Renommer les modules ** fonctionne beaucoup mieux que de déconner avec ces deux "solutions" –

Répondre

1

Utilisez imp.find_module() et imp.load_module()

find_module vous permet de spécifier votre propre chemin de recherche

+0

Il peut m'aider dans certains cas, merci. –

Questions connexes