Импорт пакета из каталога параллельного или более высокого порядка в Python 3.6+ - PullRequest
0 голосов
/ 23 октября 2018

Мой проект на python структурирован следующим образом enter image description here

Чтобы использовать logr.py пакета comUtil из пакета dataPreperation, необходимо настроить путь sys следующим образом

import sys sys.path.append('../') import comUtil.logr as logg

Теперь вопрос

  1. Является ли это общепринятой практикой и есть ли недостатки для такого использования?

  2. Какие есть другие альтернативы и, возможно, лучше?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018
  1. sys.path.append('../') постоянно добавляет этот путь в список.Теперь, если вы переходите на import a_random_module, например, в driver.py, менеджер пакетов также начнет искать a_random_module в родительском каталоге driver.py.
  2. Я бы предложил что-то вроде этого, чтобы добавить определенный путь к sys:

    import sys                                                            
    import os                                                             
    def append_specific_dir_to_sys_path():                                 
        current_dir = os.getcwd()
        parent_dir = current_dir.split('/')[:-1]                              
        import_dir = '/'.join(parent_dir) + '/comUtil/'                       
        sys.path.append(import_dir)        
    append_specific_dir_to_sys_path()
    
0 голосов
/ 23 октября 2018

Одним из решений может быть установка пути до dataIngestionTool.Потому что это корневой каталог вашего проекта.И затем импортируйте файлы как:

from dataIngestionTool.comUtil.logr import *

или

from dataIngestionTool.comUtil import logr
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...