2016-04-24 78 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它有助於理解關於模塊,路徑等的一切。 –