2011-04-18 42 views
2

目錄我在項目中使用__init__.py結構如下__init__.py用法:在Python中

project\ 
    project.py 
    cfg.py 
    __init__.py 

    database\ 
     data.py 
     __init__.py 

    test\ 
     test_project.py 
     __init__.py 

一切正常,當我需要查看數據庫\模塊project.py與

from database.data import * 

但是,如果我需要在test_project.py中有一些測試代碼,那麼如何'查看'數據庫\模塊?

+0

難道你還需要在test_project.py中導入項目嗎? – martineau 2011-04-18 13:06:50

+0

是的,我也需要,但我會簡化我的答案。 – philnext 2011-04-18 13:45:29

回答

4

你有3種選擇:

  • 使用相對導入(from .. import database.data)。我不會推薦那個。
  • 在代碼中追加路徑到sys.path
  • 使用addsitedir().pth文件。 Here is how.
+0

OK ...我選擇在sys.path中添加路徑 – philnext 2011-04-18 18:44:16

2

Relative imports

from .. import database.data 
+1

官方不鼓勵相關進口產品。 – EOL 2011-04-18 12:15:42

+0

我有一個「SyntaxError:invalid syntax」錯誤(在Python 2.71中) – philnext 2011-04-18 12:48:50

2

如果運行包含project\目錄中的腳本,你可以簡單地做from project.database.data import *,在test_project.py

這通常是一個好主意,因爲relative imports are officially discouraged:鼓勵

Relative imports for intra-package imports are highly discouraged. Always use the absolute package path for all imports. Even now that PEP 328 [7] is fully implemented in Python 2.5, its style of explicit relative imports is actively discouraged; absolute imports are more portable and usually more readable.

絕對導入像上面給出的一個。

+0

我沒有pb從項目\運行test_project.py,但是我會從項目中運行它\測試\ – philnext 2011-04-18 12:23:18