所以我在 apache 服務器上運行了一個燒瓶應用程式,一切正常。我決定重新啟動服務器(sudo service apache2 restart),由于某種原因,當我嘗試訪問 IP 時,這導致出現以下錯誤:
File "/var/www/WebApp/webapp.wsgi", line 7, in <module>
from WebApp import app as application
ImportError: cannot import name 'app'
但是,我從未更改 wsgi 檔案中的任何內容或移動任何檔案或目錄的位置。
這是我的 wsgi 檔案:
#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, "/var/www/WebApp/")
from WebApp import app as application
application.secret_key = 'dxJO>BQ,7FXsw^s[t*8mC`<&]o|d@F'
這是我的應用程式的結構(在 /var/www/ 中):
WebApp
├── WebApp
│ ├── README.md
│ ├── app.py
│ └── website
│ ├── __init__.py
│ ├── auth.py
│ ├── database.db
│ ├── databases.py
│ ├── models.py
│ ├── static
│ │ ├── form-style.css
│ │ └── index.js
│ └── templates
│ ├── base.html
│ ├── fail.html
│ ├── home.html
│ ├── login.html
│ ├── manage.html
│ ├── reset.html
│ ├── sign_up.html
│ └── success.html
└── webapp.wsgi
我嘗試將匯入行更改為
from WebApp.app import app as application (says no module named WebApp.app)
from app import app as application
from .WebApp import app as application
from .WebApp.app import app as application
import app as application
它們都不起作用。再說一次,我在 wsgi 檔案中的內容在昨晚開始失敗之前已經作業了幾天。我也嘗試過 chmod a x webapp.wsgi。
有沒有人對如何解決這個問題有任何建議?
注意:我知道這里有一個非常相似的堆疊溢位問題,但唯一的答案建議添加一個我已經擁有的 init.py 檔案。此外,服務器在能夠執行 wsgi 之外的任何檔案之前就崩潰了。
uj5u.com熱心網友回復:
當發生這種情況時,它是一個隱藏細節的例外處理程式。如果您從 Python shell 匯入應用程式的根目錄(在虛擬環境中,如果這是您使用的),則會顯示更多資訊。在這里,我在我的一個應用程式中強制出錯:
(venv) $ python
Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wsgi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/vagrant/toydeploy/wsgi.py", line 3, in <module>
app = create_app()
File "/home/vagrant/toydeploy/app/__init__.py", line 62, in create_app
from app.errors import bp as errors_bp # noqa
File "/home/vagrant/toydeploy/app/errors/__init__.py", line 6, in <module>
from app.errors import handlers # noqa
File "/home/vagrant/toydeploy/app/errors/handlers.py", line 6, in <module>
oops
NameError: name 'oops' is not defined
>>>
安裝和使用flake8是另一種早期發現問題的方法。
uj5u.com熱心網友回復:
用
import Webapp.app as application
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/350512.html
上一篇:如何將nginx組態檔從代碼服務器轉換為apache2組態檔
下一篇:從子網服務到互聯網
