У меня есть несколько каталогов проектов, и я хочу иметь библиотеки / модули, специфичные для них. Например, у меня может быть такая структура каталогов:
myproject/
mymodules/
__init__.py
myfunctions.py
myreports/
mycode.py
Предполагая, что в myfunctions.py
есть функция с именем add
, я могу вызвать ее из mycode.py
с наиболее наивной процедурой:
execfile('../mymodules/myfunctions.py')
add(1,2)
Но чтобы быть более изощренным, я также могу сделать
import sys
sys.path.append('../mymodules')
import myfunctions
myfunctions.add(1,2)
Это самый идиоматический способ сделать это? Также есть упоминание об изменении PYTHONPATH
(os.environ['PYTHONPATH']
?), Но стоит ли мне заняться этим или другими вещами?
Кроме того, я видел import
операторы, содержащиеся в операторах класса, и в других случаях, определенные в верхней части файла Python, который содержит определение класса. Есть ли правильный / предпочтительный способ сделать это?