Локальные модули python

У меня есть несколько каталогов проектов, и я хочу иметь библиотеки / модули, специфичные для них. Например, у меня может быть такая структура каталогов:

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, который содержит определение класса. Есть ли правильный / предпочтительный способ сделать это?

7
задан hatmatrix 11 October 2011 в 21:22
поделиться