簡體   English   中英

heroku上的gunicorn導入錯誤

[英]gunicorn import error on heroku

我不能用簡單的燒瓶應用程序在heroku上運行gunicorn應用程序非常簡單,這個app.py

app = Flask(__name__)

@app.route("/")
def say_hello(url):
    return "Hello"


if __name__ == "__main__":
    port = int(os.environ.get('PORT', 8888))
    app.run(host='0.0.0.0',port=port)

當我切換到使用gunicorn它崩潰時,應用程序在heroku上燒瓶測試服務器正常工作:

ImportError: No module named app.wsgiapp

我的requirements.txt:

Flask==0.8
gevent==0.13.7
gunicorn==0.13.2

我試過不同版本的gunicorn從0.13.7到0.14.6沒有成功

Procfile:

web: gunicorn app:app -w 4 -b 0.0.0.0:$PORT

運行命令:

heroku logs

←[33m2012-08-09T21:08:02+00:00 app[web.1]:←[0m ImportError: No module named app.
wsgiapp ←[33m2012-08-09T21:08:02+00:00 app[web.1]:←[0m     entry = __import__(self.modul
e_name, globals(),globals(), ['__name__'])

請幫忙

謝謝

在我的情況下,我通過在我的頂級文件夾中有一個gunicorn.py文件來解決此錯誤。 這與Heroku上安裝的gunicorn庫發生了沖突。

所以導致問題的運行命令是:

gunicorn -c gunicorn.py myapp:main

引發以下錯誤:

Traceback (most recent call last):
  File "/app/.heroku/python/bin/gunicorn", line 9, in <module>
    load_entry_point('gunicorn==18.0', 'console_scripts', 'gunicorn')()
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/app/.heroku/python/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named app.wsgiapp

而在一個mv gunicorn.py gunicorn_config.py它運行良好:

gunicorn -c gunicorn_config.py myapp:main

我在將Ubuntu升級到14.04 LTS時遇到了這個問題。

出於某種原因, gunicorn未能找到正確的python路徑來解析wsgi模塊。

我現在通過--pythonpath參數( 在此處記錄 )將python路徑明確聲明為gunicorn來解決這個問題。

例如:

gunicorn --pythonpath /path/to/containing/directory "app.wsgi_app:wsgi_app"

我終於想出了這一個。

它基本上只是一個PATH問題。 如果你根據你的設置以錯誤的順序導入某些模塊(如ossys ),你將導致Gunicornapp.wsgiapp模塊中查找錯誤的包。 (不要與Flask中的app.wsgi_app函數混淆)

正確的導入順序將根據您的設置而有所不同,但基於我能夠工作的經驗法則是確保在您的os模塊之前導入您的sys模塊。

除此之外,假設配置的其余部分是正常的(如上所述),您不應該有任何問題。

注意:這只是一個與Gunicorn的HEROKU問題。 它與他們的PYTHONPATH和模塊搜索路徑的設置方式有關。 我不知道原因究竟是什么,但這只是生產環境所必需的,無論模塊導入順序如何,本地設置都能正常工作。

我的猜測是python路徑中還有一個“app”模塊(gunicorn和flask都有一個名為app的模塊)。 重命名除app.py以外的任何東西,它應該工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM