2012-09-04 50 views
0

我正在嘗試將我的django應用程序部署到亞馬遜的ec2。我遇到了一些麻煩,讓我的網站包和我的中間件在ec2服務器上工作。我爲我的AMI使用bitnami djangostack,但是我很困惑在服務器上放置我的站點包(如註冊南等)以及放置我的中間件(如分頁)的位置。Django導入錯誤使用EC2和bitnami

現在我正在運行的服務器,並收到以下錯誤:

Traceback (most recent call last): 

    File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/core/servers/basehttp.py", line 283, in run 
    self.result = application(self.environ, self.start_response) 

    File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__ 
    return self.application(environ, start_response) 

    File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 250, in __call__ 
    self.load_middleware() 

    File "/opt/bitnami/apps/django/lib/python2.6/site-packages/django/core/handlers/base.py", line 47, in load_middleware 
    raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)) 

ImproperlyConfigured: Error importing middleware pagination.middleware: "No module named pagination.middleware" 

你可以在以下link

回答

2

site-packages看到的錯誤是不顯山露水您手動添加項目。讓Python的安裝工具 - pipeasy_install爲你完成這項工作。

至於中間件,它可以去任何地方在你的PYTHONPATH。放置它的最佳位置是位於應用程序目錄中的文件(您看到相同的地方models.py);通常這個文件被稱爲middleware.py

如果中間件是第三方應用程序的一部分;首先安裝該應用程序。通常這是通過sudo easy_install package-name完成的。使用sudo將其安裝在全局python site-packages目錄中。

更好的方法是使用virtual environment

+0

有沒有辦法手動添加項目?我有我的本地計算機上的所有必需站點包的文件夾,我想我可以將這些添加到我的服務器上的文件夾?這是不可能的?非常感謝burhan! –

+0

這樣做的問題是有些軟件包可能會優化已編譯的代碼,而這些代碼可能無法在目標服務器上運行;像數據庫驅動程序這樣的組件也有其他構建需求需要滿足 - 它們可能會安裝但不會工作;這就是爲什麼它不鼓勵。你可以在你的開發機器上執行'pip freeze> requirements.txt'。這將列出所有的軟件包。然後將'requirements.txt'文件複製到您的服務器並運行'sudo pip install -r requirements.txt'。這將正確安裝開發機器上的所有內容。 –