在Python 3.6+中从并行或更高阶目录导入包

时间:2018-10-23 13:27:42

标签: python python-3.x package

我的python项目的结构如下enter image description here

要从dataPreparation软件包中使用comUtil软件包的用户logr.py,必须如下调整其sys路径

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

现在的问题是

  1. 这是一种可接受的做法吗?这种用法有任何缺点吗?

  2. 还有哪些其他选择,可能还有更好的选择?

2 个答案:

答案 0 :(得分:0)

一种解决方案是将路径设置到dataIngestionTool。因为这是您项目的根目录。 然后将文件导入为:

from dataIngestionTool.comUtil.logr import *

from dataIngestionTool.comUtil import logr

答案 1 :(得分:0)

  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()