我剛剛克隆使用水銀來,我已經建立了Python 2.7版在Windows機器上一個Django項目。當我嘗試運行manage.py
(帶或不帶命令),我收到以下錯誤:Django的:manage.py導入錯誤,因爲環境變量未定義
Traceback (most recent call last):
File "C:\Users\jes.000\Documents\project\manage.py", line 30, in <module>
import django.core.servers.basehttp
File "C:\Python27\lib\site-packages\django\core\servers\basehttp.py", line 26, in <module>
from django.views import static
File "C:\Python27\lib\site-packages\django\views\static.py", line 95, in <module>
template_translatable = ugettext_noop(u"Index of %(directory)s")
File "C:\Python27\lib\site-packages\django\utils\translation\__init__.py", line 75, in gettext_noop
return _trans.gettext_noop(message)
File "C:\Python27\lib\site-packages\django\utils\translation\__init__.py", line 48, in __getattr__
if settings.USE_I18N:
File "C:\Python27\lib\site-packages\django\utils\functional.py", line 184, in inner
self._setup()
File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 40, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." %ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
我明白manage.py應該設置環境變量。我也明白,我可能會得到這個錯誤,因爲該項目不在Python路徑中......但手動添加它似乎不應該是必要的。是不是manage.py應該解決這個問題呢?
編輯:我剛剛測試,發現它在Linux下完全一樣的事情。
編輯:這是一個非常有用的發現:如果我通過PIP安裝Django我只得到這個錯誤,它工作正常,如果我安裝在Ubuntu中的python-Django的包。所以有些東西是debian軟件包所做的,PIP不是。也許debian軟件包設置了一些環境變量?我需要弄清楚,因爲我試圖在Windows上開發。
編輯:我想我已經發現了這個問題,但不是一個解決方案。在Ubuntu機器上工作時,當我通過PIP(pip install django
)安裝Django時,該項目無法處理我給出的錯誤。如果我創建了一個新項目(django-admin startproject testproject
)並嘗試運行它,並且它由創建的文件夾中的manage.py
和另一個包含其他文件夾的文件夾組成。就像這樣:
+-testproject
+-manage.py
+-testproject
+-__init__.py
+-etc.
當我安裝Debian軟件包(apt-get install python-django
)我試圖在作品使用的項目,如果我創建一個測試項目(django-admin startproject testproject
)它有一個文件夾結構是這樣的:
+-testproject
+-manage.py
+-__init__.py
+-etc.
注意不同之處:PIP Django包似乎將manage.py放在作爲應用程序的python模塊之外,而Debian軟件包則將manage.py放在模塊中。我認爲這是由於這兩個軟件包是不同版本的Django,在這兩個軟件包之間他們改變了結構,因爲這兩個軟件包做了不同的處理並沒有任何意義。
所以我的問題是,我試圖開發項目中使用一個已經Debian的包裝,而我的Windows機器上我試圖使用Django的版本從PIP版本最初產生。
麻煩的是,我不能確定如何來解決這個問題。天真地將manage.py移動到一個目錄中,使其位於項目文件夾的上方不起作用,因爲這個'debian-package version'manage.py嘗試僅僅是import settings
,如果它與settings.py不在同一個文件夾中,它會失敗。但是在Django的其他地方,似乎期望項目本身位於//settings.py(如果使用了django-admin的pip版本,則會出現這種情況),而不是在/settings.py中(正如如果使用debian-package版本的話)。
如果我看它,在Ubuntu軟件庫的版本是1.3.1,而在PyPI中的版本是1.4。看發行說明1.4,嘿嘿:
An updated default project layout and manage.py that removes the 「magic」 from prior versions. And for those who don’t like the new layout, you can use custom project and app templates instead!
但是......不應該與1.3佈局生成的項目仍在1.4下工作..?
也許這可以幫助:http://stackoverflow.com/questions/7479493/django-settings-module -is-undefined –
我的理解是,manage.py(它實際上只是django-admin的包裝)的目的是消除全局設置這些值或手動提供它們的需要。 – jcrawfordor
你是否在項目目錄或外部運行'manage.py'? – jdi