2009-07-21 4 views
7

Si j'ai des fichiers x.py et y.py. Et y.py est le lien (symbolique ou dur) de x.py.python - Importer un fichier qui est un lien symbolique

Si j'importe les deux modules dans mon script. Va-t-il l'importer une fois ou il suppose que les deux sont des fichiers différents et l'importer deux fois.

Qu'est-ce qu'il fait exactement?

Répondre

9

Python l'importera deux fois.

Un lien est un concept de système de fichiers. Pour l'interpréteur Python, x.py et y.py sont deux modules différents.

 
$ echo print \"importing \" + __file__ > x.py 
$ ln -s x.py y.py 
$ python -c "import x; import y" 
importing x.py 
importing y.py 
$ python -c "import x; import y" 
importing x.pyc 
importing y.pyc 
$ ls -F *.py *.pyc 
x.py x.pyc [email protected] y.pyc 
10

Il vous suffit de faire attention dans le cas où votre script lui-même est un lien symbolique, auquel cas la première entrée de sys.path sera le répertoire contenant la cible du lien.

+0

Ah, oui, je viens juste de tomber dessus. Je pointe vers un script dans ma zone de 'déploiement', qui pendant le développement est un lien symbolique vers la copie originale que je suis en train d'éditer. Il m'a fallu beaucoup de temps pour comprendre pourquoi python ne pouvait pas trouver d'autres modules qui sont assis là dans le même directement où le lien symbolique existe. Plutôt ennuyeux, en fait. –

Questions connexes