2016-04-24 136 views
2

我有以下目录结构:从另一个包导入类

F:. 
│ .gitignore 
│ 
└───Tests 
    │ main.py 
    │ __init__.py 
    │ 
    ├───compare 
    │ │ __init__.py 
    │ │ 
    │ └───process 
    │   process.py 
    │   __init__.py 
    │ 
    ├───lookup 
    │  User.py 
    │  __init__.py 
    │ 
    ├───requestor 
    │  Requestor.py 
    │  __init__.py 
    │ 
    ├───search 
    │  UserSearch.py 
    │  ProductSearch.py 
    │  __init__.py 
    │ 
    └───utils 
      constants.py 
      __init__.py 

我能够从main.py导入任何文件/类像

from search.UsersSearch import UsersSearchPayLoad 
from search.ProductSearch import ProductSearchPayLoad 
from utils.constants import * 

,但我无法从任何其他做任何进口包如,从search.UserSearch

from ..utils.constants import * 
from Tests.utils.constants import * 

我指的是this了解使用相对导入的正确方法。

我使用Python 2.7.11

回答

2

尝试增加:

import os 
import sys 

sys.path.append(os.path.realpath(os.getcwd())) 

在: Tests/__init__.py

+0

我加入这一行,并从'进口..utils.constants *'作品in'search'和'from ... utils.constants import *'在'compare.process'中工作。或者我应该使用'import Tests.utils.constants'。因为两者都在工作? –

+0

这很好。我希望你能看到这个:https://www.youtube.com/watch?v = 0oTh1CXRaQ0它有助于理解关于模块,路径等的一切。 –