3

Heroku でかなり基本的なアプリをデプロイしようとしています。以前は成功していましたが、今試してみると、何らかの理由でインポート エラーが発生します。Foreman の起動は問題なく動作しますが、アプリケーションを起動しようとすると、インポートが壊れる問題が発生するようです。これは私が得るログメッセージです:

heroku[web.1]: Starting process with command `python manage.py runserver -p 40309`
app[web.1]: Traceback (most recent call last):
app[web.1]:   File "manage.py", line 6, in <module>
app[web.1]: ImportError: No module named SpoolEngine
app[web.1]:     from SpoolEngine import app
heroku[web.1]: Process exited with status 1
heroku[web.1]: State changed from starting to crashed
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/ host=tranquil-taiga-1563.herokuapp.com fwd="66.31.20.171" dyno= connect= service= status=503 bytes=
heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=tranquil-taiga-1563.herokuapp.com fwd="66.31.20.171" dyno= connect= service= status=503 bytes=

これは私のプロファイルです:

web: python manage.py runserver -p $PORT

これは、manage.pyすべてを開始するために使用しているファイルです。

import os, sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

from flask.ext.script import Manager, Server
from SpoolEngine import app

manager = Manager(app)

manager.add_command("runserver", Server(
    use_debugger=True,
    use_reloader=True,
    host='0.0.0.0')
)

if __name__ == "__main__":
    manager.run()

これが私が行ったばかげたことである場合は申し訳ありませんが、私はこの分野にかなり慣れていないため、いくつかの指針を本当に感謝しています.

4

2 に答える 2

2

ここで推測:あなたのコードが表示されます

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

したがって、ローカルではいくつかのパッケージが manage.py の親ディレクトリにインストールされていますが、Heroku ではそうではありません。

デバッグするだけで、私も追加します

import sys
print sys.path

manage.py の一番上に移動し、出力を比較します。ローカル実行の出力でモジュールを探してheroku run bashから、リモート実行によって出力されたディレクトリの内容を確認できます。

于 2013-08-04T06:14:12.717 に答える