2017-01-03 30 views
0

可以说,我有一个看起来像这样的目录树:如何从同一程序中的不同目录中导入程序包?

main - 
    | 
    lib- 
     | 
     core- 
      | 
     fun- 
      | 
      some_file 
     stuff- 
      | 
     another_file 

我怎么能导入从some_file模块加入another_file?每次我尝试做进口(是的,我知道__ init__.py)我得到一个错误:

Traceback (most recent call last): 
    File "file.py", line 6, in <module> 
    from some_file import some_method 
ImportError: No module named some_file 

是否可以将模块导入到另一个文件?

+0

你可以显示你如何尝试导入模块的代码 – depperm

+0

@depperm没有办法使用'os.path.join'来做到这一点吗? – User9123

回答

1

如果所遍历的所有目录都是Python包(其中包含__init__.py文件),则可以使用绝对或相对导入进行导入。

假设你从其中main包所在的目录运行程序,你会导入some_file模块:

import main.lib.core.fun.some_file 

否则,您必须在尝试导入之前要追加到Python路径:

import sys 
sys.path.append("......main/lib/core") 

import fun.some_file 

第二个示例假定fun是一个包含__init__.py文件的Python包。

+0

谢谢,这工作 – User9123

0

只是一个__init__.py文件添加到目录就可以被看作是一个模块:

main - 
    | 
    lib- 
     | 
     core- 
      | 
     fun- 
      | 
      some_file 
      __init__.py 
     stuff- 
      | 
     another_file 

__init__.py可以是一个空白文件,所有重要的是它的存在。然后,你可以做import fun.some_file

相关问题