Python 使用gunicorn运行myapp会出现错误;没有名为myapp的模块;

Python 使用gunicorn运行myapp会出现错误;没有名为myapp的模块;,python,flask,gunicorn,Python,Flask,Gunicorn,我有一个名为myapp的现有Flask应用程序,它是使用 pyinstaller 当我使用myapp运行gunicorn时,它会出现以下错误 $ gunicorn myapp:app [2019-04-02 22:08:16 +0000] [478] [INFO] Starting gunicorn 19.9.0 [2019-04-02 22:08:16 +0000] [478] [INFO] Listening at: http://127.0.0.1:8000 (478) [2019-04-

我有一个名为myapp的现有Flask应用程序,它是使用 pyinstaller

当我使用myapp运行gunicorn时,它会出现以下错误

$ gunicorn myapp:app
[2019-04-02 22:08:16 +0000] [478] [INFO] Starting gunicorn 19.9.0
[2019-04-02 22:08:16 +0000] [478] [INFO] Listening at: http://127.0.0.1:8000 (478)
[2019-04-02 22:08:16 +0000] [478] [INFO] Using worker: sync
[2019-04-02 22:08:16 +0000] [481] [INFO] Booting worker with pid: 481
[2019-04-02 22:08:16 +0000] [481] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/base.py", line 129, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python3.5/dist-packages/gunicorn/workers/base.py", line 138, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python3.5/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python3.5/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python3.5/dist-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python3.5/dist-packages/gunicorn/util.py", line 350, in import_app
    __import__(module)
ImportError: No module named 'myapp' <===============
[2019-04-02 22:08:16 +0000] [481] [INFO] Worker exiting (pid: 481)
[2019-04-02 22:08:16 +0000] [478] [INFO] Shutting down: Master
[2019-04-02 22:08:16 +0000] [478] [INFO] Reason: Worker failed to boot.
就独立的Flask服务器而言,myapp非常适合我。现在我需要转移到gunicorn+Flask,以摆脱Flask的限制(请注意,myapp只从另一个内部服务调用,我不需要web访问/nginx/html页面等,只有剩下的调用由myapp提供服务)

下面是main.py的外观


app = Flask(__name__)

...
def runServer(args):
    app.logger.info('Starting myapp service')
    app.run('0.0.0.0', port=args.port) <=============
...

def main():
    rv = 0  # Always return 0 by default
    args = parse_args()
    if args.which == 'server':
        runServer(args)
.....

if __name__ == '__main__':
    sys.exit(main())

但是我想让它在我安装myapp的地方运行,而不是从构建目录中运行

你能解决这个问题吗?

app = Flask(__name__)

...
def runServer(args):
    app.logger.info('Starting myapp service')
    app.run('0.0.0.0', port=args.port) <=============
...

def main():
    rv = 0  # Always return 0 by default
    args = parse_args()
    if args.which == 'server':
        runServer(args)
.....

if __name__ == '__main__':
    sys.exit(main())
$ gunicorn main:app
[2019-04-02 22:30:55 +0000] [482] [INFO] Starting gunicorn 19.9.0
[2019-04-02 22:30:55 +0000] [482] [INFO] Listening at: http://127.0.0.1:8000 (482)
[2019-04-02 22:30:55 +0000] [482] [INFO] Using worker: sync
[2019-04-02 22:30:55 +0000] [485] [INFO] Booting worker with pid: 485