Si j'ai un module, foo
, en Lib/site-packages
, je peux juste import foo
et cela fonctionnera. Cependant, quand j'installe des choses à partir d'oeufs, je reçois quelque chose comme blah-4.0.1-py2.7-win32.egg
en tant que dossier, avec le contenu du module à l'intérieur, mais je n'ai encore besoin que de faire import foo
, rien de plus compliqué. Comment Python suit-il les œufs? Ce n'est pas juste la correspondance de dirname comme si je dépose ce dossier dans une installation Python sans passer par dist-utils, il ne trouve pas le module. Pour être plus clair: je viens d'installer zope. Le nom du dossier est "zope.interface-3.3.0-py2.7-win32.egg". Cela fonctionne:Comment Python suit-il les modules installés avec des œufs?
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import zope.interface
>>>
créer un dossier "bla-4.0.1-py2.7-win32.egg" avec un module vide "haha" dans (et __init__.py
). Cela ne fonctionne pas:
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import blah.haha
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named blah.haha
>>>
Cela fait, si:
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg_resources import require
>>> require("blah>=1.0")
[blah 4.0.1 (c:\python27\lib\site-packages\blah-4.0.1-py2.7-win32.egg)]
>>> import haha
>>>
Alors, comment puis-je le faire fonctionner sans require
?
La source Python est entièrement disponible pour vous. Vous pouvez lire l'implémentation de l'instruction 'import' sans trop de problèmes. Comme ils disent: "Utilisez la Source, Luke." –
@ S.Lott: toute question peut être résolue par un niveau différent de «faites-le vous-même». ce n'est pas ce que ce site est pour. c'est aussi plus efficace. au lieu de me pencher à travers la source et de perdre une heure, me rendre malheureux, je peux demander ceci ici, vérifier de temps en temps, obtenir ma réponse, être heureux, donner un représentant à quelqu'un d'autre pour leur donner leur libération de dopamine, avez-vous cette question apparaître sur google si quelqu'un d'autre veut savoir, etc – Claudiu
"perdre une heure"? Vraiment? Le gaspillage semble dur. Vous apprendrez beaucoup. Et, de plus, cette partie du doco semble assez complète. http://docs.python.org/library/modules.html#importing-modules. Je suis surpris que vous n'avez pas commencé avec la documentation. –