LINUX.ORG.RU

python


0

0

Есть проект на python. Часть дерева:

./config.py
./xml_parse
    playlist_handler.py
    ...
./playlist
    playlist.py
    task.py
    ...
...

Приходится много из каких файлов доступаться к config.py, а также много
где типа того, что из playlist_handler.py мне нужен доступ к task.py.

Для этого делаю следующее:

import sys
sys.path.append ("..")

import playlist.entry
import playlist.entry_set
import playlist.task

Может есть ли способ красивее, чем изменение sys.path? А то много где
приходится...
anonymous

Ответ на: комментарий от anonymous

Я тоже не совсем понял. Если нужно импортировать модули, то лучше настроить их поиск не по относительным путям, а по абсолютным.

   import sys,os
   
   # получаем полный путь к главному модулю
   dname = os.path.dirname(os.path.abspath(sys.argv[0]))
   # относительно него настраиваем sys.path
   sys.path.add(os.path.join(dname,"Path1"))
   sys.path.add(os.path.join(dname,"Path2"))
   sys.path.add(os.path.join(dname,"Path3"))

Это достаточно сделать один раз в главном модуле.
из остальных модулей можете убирать: sys.path.append('..')

kosmonavt
()
Ответ на: комментарий от kosmonavt

это я и имел в виду, БОЛЬШОЕ СПАСИБО

anonymous
()
Ответ на: комментарий от kosmonavt

Если делать совсем "политкорректно", то нужно все модули складывать в один package (возможно, с sub-package'ами, если много) и класть его в стандартный путь. В инсталляции помогут distutils, в разработке - $PYTHON_PATH (чтоб указать на development-версию).

Корёжить sys.path не стоит, без веских на то причин.

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.