2017-01-01 32 views
3

私はherokuにアプリケーションをデプロイしようとするとImportError: No module namedを取得しようとしていますが、ここではHerokuのエラー "GetError:モジュールがありません"(Herokuではローカルではありません)

Traceback (most recent call last): 
File "mr_meeseeks.py", line 4, in <module> 
    import Helpers.Plugin_Handler as Plugin_Handler 
File "/app/Helpers/Plugin_Handler.py", line 5, in <module> 
    from Utils.constants import Plugin_Type 
ImportError: No module named 'Utils.constants' 

からのログがあるここに私のファイル構造である: File Structure

私の知る限り、Utilsの/ constants.pyが存在します。関連性がある場合は、SlackBotです。残りのコードはhereです。

+0

私は、ローカルでエラーが発生しないことに驚いています.Utilsはヘルパーと同じモジュールにはありません。 '__pycache__'をすべてローカルで削除して、もう一度やり直せますか?また、それがローカルで失敗していないことをどのように知っていますか?あなたは踏み出したステップを試しましたか、それともあなたのテストに基づいてそうしていますか?あなたのテストがチェックインされていないと言ったら: – plumSemPy

+0

@plumSemPy私はまだ悲しいことにテストを持っていません。私は 'python mr_meeseeks.py'を走らせることができ、それがHerokuのようにクラッシュすることはないので、それがローカルでは失敗していないことを知っています。 Slackbotは意図したとおりにメッセージに応答します。 私のProcfileの内容は 'worker:python mr_meeseeks.py'なので、2つは私の知識のなかで最高になるはずです。 '__pycache__'ファイルを削除しましたが、それでもローカルでクラッシュしませんでした。それはあなたが求めていたものですか? – TWOF

+0

はい、Utilsは 'Plugin_Handler'と同じモジュール(ディレクトリ)にないので、あなたの' Plugin_Handler'でのインポートは機能しません。 '.pyc'ファイルをすべて削除してみてください。私はあなたのprodエラーをローカルで再現しようとしています – plumSemPy

答えて

1

Pythonインタプリタは、環境変数$PYTHONPATHの下にあるモジュールを探します。あなたや編集者のように見えます(私の編集者はディレクトリをソースとしてマークします)。SlackBot/$PYTHONPATHに追加しました。

ソースルートとしてディレクトリをマークしたときに、このエラーが発生しました。

あなたは、いくつかのオプションがあります。

、スタイルに注意を:PythonクラスはCamelCaseで、Pythonモジュールはlowercase_with_underscoresである必要があります。 PyCharmのようなエディターをお持ちの場合、エディターはこれらの問題を自動的に修正することができます。

PEP 8は、公式のpythonスタイルのガイドですが、私はこれらの問題を自動的に検出して修正できるようにリンターを使用することをお勧めします。

+0

[ここにある](http://stackoverflow.com/questions/7587457/importerror-no-module-named-python)のソリューションは私の問題を解決しますか? – TWOF

+0

@TWOFはい、それはPYTHONPATHに追加されます。 (受け入れるupvoteを忘れないでください!:)) –

関連する問題