Problem ze ścieżką wyszukiwania modułu Pythona

Próbuję pracować na środowisku dev, ale znajduję problemy w tym pytonie, który wydaje się używać modułów z katalogu site-packages. Chcę, żeby korzystał z modułów z mojego katalogu dev.

sys.path zwraca kilka katalogów, takich jak ten

['', '/usr/lib/python26.zip', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/site-packages' etc

To dobrze, używa pierwszego katalogu jako pierwszego miejsca wyszukiwania (przynajmniej tak to rozumiem).

Ok teraz, jeśli utworzę powiedz plik o nazwie command.py w bieżącym katalogu, wszystko działa tak, jakbym tego oczekiwał.

>>> import commands
>>> commands.__file__
   'commands.pyc'

Wychodzę z powłoki Pythona i uruchamiam kolejną. Zrobię to.

>>> import foo.bar.commands

Teraz oczekuję, że zrobię to z bieżącego katalogu na ./foo/bar/ i stamtąd otrzymasz moduł komend. Ale dostaję to

>>> foo.bar.commands.__file__
    '/usr/lib/python2.6/site-packages/foo/bar/commands.pyc'

Nawet jeśli z mojego obecnego katalogu jest ./foo/bar/commands.py

Używając imp.find_module () i imp.load_module () mogę poprawnie załadować moduł lokalny. Co tak naprawdę jest interesujące (chociaż nie wiem, co to znaczy) to ostatnia linia, która jest wydrukowana w tej sekwencji

>>> import foo.bar.commands
>>> foo.bar.commands.__file__
   '/usr/lib/python2.6/site-packages/foo/bar/commands.pyc'
>>> foo.bar.__file__
   '/usr/lib/python2.6/site-packages/foo/bar/__int__.pyc'
>>> foo.__file__
    './foo/__init__.pyc'

Jeśli więc znajdzie foo /w tym.pyc w lokalnym katalogu, dlaczego nie może znaleźć innych plików w lokalnym katalogu?

Twoje zdrowie

questionAnswers(2)

yourAnswerToTheQuestion