Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 工头启动找不到应用程序:';soapbar&x27;_Python_Heroku_Flask - Fatal编程技术网

Python 工头启动找不到应用程序:';soapbar&x27;

Python 工头启动找不到应用程序:';soapbar&x27;,python,heroku,flask,Python,Heroku,Flask,以下是heroku快速入门指南: 我被困在工头的开始部分。这就是我的目录。我只是在运行一个基本的web应用程序。没有框架什么的 soapbar/ Procfile.txt soapbar/ soapbar.py __init__.py venv/ Include/ Lib/ Scripts/ 这是我的proc文件中的内容: web: gunicorn soapbar.soapbar:app

以下是heroku快速入门指南:

我被困在工头的开始部分。这就是我的目录。我只是在运行一个基本的web应用程序。没有框架什么的

soapbar/
    Procfile.txt
    soapbar/
        soapbar.py
        __init__.py
    venv/
        Include/
        Lib/
        Scripts/ 
这是我的proc文件中的内容:

web: gunicorn soapbar.soapbar:app
这是堆栈跟踪:

09:28:54 web.1  | started with pid 34567
09:28:54 web.1  | 2014-03-20 09:28:54 [34567] [INFO] Starting gunicorn 18.0
09:28:54 web.1  | 2014-03-20 09:28:54 [34567] [INFO] Listening at: http://0.0.0.0:5000 (34567)
09:28:54 web.1  | 2014-03-20 09:28:54 [34567] [INFO] Using worker: sync
09:28:54 web.1  | 2014-03-20 09:28:54 [34570] [INFO] Booting worker with pid: 34570
09:28:54 web.1  | Failed to find application: 'soapbar.soapbar'
09:28:54 web.1  | 2014-03-20 09:28:54 [34570] [INFO] Worker exiting (pid: 34570)
09:28:54 web.1  | 2014-03-20 09:28:54 [34567] [INFO] Shutting down: Master
09:28:54 web.1  | 2014-03-20 09:28:54 [34567] [INFO] Reason: App failed to load.
09:28:54 web.1  | exited with code 4
09:28:54 system | sending SIGTERM to all processes
SIGTERM received
请帮忙

这是soapbar.py:

import logging
import os

from spyne.application import Application
from spyne.decorator import srpc
from spyne.interface.wsdl import Wsdl11
from spyne.protocol.soap import Soap11
from spyne.service import ServiceBase
from spyne.model.complex import Iterable
from spyne.model.primitive import Integer
from spyne.model.primitive import String
from spyne.server.wsgi import WsgiApplication

class MessageService(ServiceBase):
    @srpc(String, Integer, _returns=Iterable(String))
    def send_message(msg):
        yield 'Your message: %s' % msg

if __name__=='__main__':
    try:
        from wsgiref.simple_server import make_server
    except ImportError:
        print "Error: server requires Python >= 2.5"

    logging.basicConfig(level=logging.INFO)
    logging.getLogger('spyne.protocol.xml').setLevel(logging.DEBUG)

    application = Application([MessageService], 'org.temporary.soap',
            interface=Wsdl11(), in_protocol=Soap11(), out_protocol=Soap11())

    port = int(os.environ.get('PORT', 5000))

    server = make_server('0.0.0.0', port, WsgiApplication(application))

    print "listening to http://0.0.0.0:%s" % port
    print "wsdl is at: http://0.0.0.0:%s/?wsdl" % port

    server.serve_forever()

这可能不是您的全部问题,但看看heroku在该教程中使用的flask示例,它们实际上在python文件中定义了一个“app”变量(wsgi server)(不在main下)。这就是为什么他们的工头文件有:app。你的也有:app,但你没有定义app

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

PYTHONPATH设置是否正确,以包括模块的位置?PYTHONPATH?我正在使用一个venv环境,所以这不重要,对吧?不确定,但检查一下这个不会有什么坏处:由PYTHONPATH修改,但不起作用:/。它似乎不知怎么知道它在哪里,因为当我删除init文件时,我得到了找不到的模块。所以gunicorn知道它在那里,但它找不到应用程序?如果您将Procfile更改为web:gunicorn soapbar.soapbar2:app,是否会出现其他错误?soapbar.py有多大?你能粘贴它吗?问题可能就在里面。