Это похоже на работу: Вот структура каталогов:
~/test/kl% ls -R
.:
foo spam.py
./foo:
eggs.py eggs.pyc ham.py ham.pyc __init__.py __init__.pyc
Вот содержимое файла:
~/test/kl% cat spam.py
import foo.eggs
~/test/kl% cd foo/
~/test/kl/foo% cat eggs.py
print( "got eggs, importing ham!" )
import ham
Мы можем импортировать ветчину из spam.py и foo /eggs.py:
~/test/kl% python spam.py
got eggs, importing ham!
got ham!
Полезное правило, которое следует помнить: когда вы говорите python script.py
, каталог, содержащий script.py
, добавляется в начало sys.path
, каталоги ищут модули.Вот почему python spam.py
работает без изменений PYTHONPATH
.
~/test/kl% python foo/eggs.py
got eggs, importing ham!
got ham!
Здесь ~ / test / kl / foo добавляется к sys.path
.Это нормально, потому что eggs.py
пытается import ham
.Так как ham.py
находится в ~/test/kl/foo
, что в sys.path
, Python находит это просто замечательно.
~/test/kl% cd foo
~/test/kl/foo% python eggs.py
got eggs, importing ham!
got ham!
Каталог ~ / test / kl не был в моей PYTHONPATH.