2010-08-23 56 views
4

我希望能夠從我的項目中的應用程序中導入東西,而無需參考我的項目名稱。如何在我的PYTHONPATH中包含Django應用程序?

我的文件夾結構就像這樣;我有一個名爲djangoproject1的項目,裏面有一個名爲apps的文件夾,然後在該文件夾中有我的個人應用程序。

djangoproject1,應用程序和我所有的應用程序都有一個空的「__init__.py」文件。

在我的settings.py文件我有以下代碼:

import os 
import sys 
PROJECT_ROOT = os.path.dirname(__file__) 
sys.path.insert(0, os.path.join(PROJECT_ROOT, "apps")) 

我試着將我的應用程序到INSTALLED_APPS幾個方面:

'djangoproject1.apps.app1', 「djangoproject1 .apps.app2' ,

'apps.app1', 'apps.app2',

'APP1', 'APP 2',

但沒有任何工程。每當我嘗試做:

from app1 import * 

我得到了一個未解決的導入錯誤。我正在使用最新版本的eclipse和django

回答

1

好的,所以我通過在項目屬性下通過eclipse將應用程序文件夾添加到PYTHONPATH中來工作。這只是日食而已?我不確定當我嘗試部署網站時這將如何工作。你們有什麼感想?

+2

啊。這解釋了事情。如果你添加到'settings.py'並且不執行'shell',你的'PYTHONPATH'不會改變。如果您希望應用程序在不使用'shell'的情況下是可導入的,那麼您將不得不將其添加到_system variable_'PYTHONPATH'中。您可以通過在生產環境中通過settings.py添加應用程序來逃脫。 – 2010-08-23 17:51:37

+0

好的,非常感謝,所以現在通過Eclipse進行添加對於開發是很好的,只要我在settings.py中保留該代碼,當我部署它時,它也應該可以正常工作。 – JPC 2010-08-23 18:11:01

0

聲明sys.path.insert(0, os.path.join(PROJECT_ROOT, "apps"))對我來說確實很好。在此之後,您只需將app1添加到INSTALLED_APPS以及所有應該的工作。但顯然他們沒有工作。

請嘗試以下操作:1.打印您的sys.path並確認您的項目的app目錄在列表中。 2.仔細檢查您的apps文件夾內是否有__init__.py

更新

確定。現在你可以啓動Django shell並嘗試再次導入?如果失敗,請在此處發佈堆棧跟蹤。

+0

1 'C:\\ \\用戶\\ jec23我的Java項目\\ \\ djangoproject1 SRC \\ \\ djangoproject1應用'這是相關的sys.path條目。 2.是的,那是。 – JPC 2010-08-23 17:28:16

0

您必須將apps目錄包含到PYTHONPATH中。請確保在apps目錄中沒有__init__.py,因爲它變成了一個包而不是「簡單目錄」。比,在settings.py包括

app1, app2, app3 

使用

from app1 import * 
相關問題