私が考えることができる唯一の問題は、パッケージ作成のプロセスです。Django アプリケーションをデプロイするためにどのようなプロセスに従いましたか?
ローカル マシンまたは CI サーバーで Django アプリケーションをコンパイルし、コンパイル済みのパッケージをデプロイした場合、pyc ファイルにはローカル マシンまたは CI サーバーのハード コードされたパスが含まれるため、インポート モジュールの問題が発生します。Python ファイルをコンパイルする前に修正するには、ローカル/CI サーバーに同じ階層を作成してから、コンパイルしてデプロイする必要があります。
お役に立てれば。
[編集]
pyc ファイルのハードコードされたパスが PITA であることに同意します。これを発見した後、実稼働環境でこれを行っています。
ただし、サーバー上で pyc ファイルを再生成することに同意しません。アプリケーションが大きくなり、大規模なアプリケーションに移行すると、非常に遅くなるからです。
運用ディレクトリ構造に従うために、開発環境のディレクトリを保持する必要はありません。代わりに、開発マシンに任意のディレクトリ パスを設定し、本番環境で従うディレクトリ構造を作成することでパッケージを作成する別の bash スクリプトを作成できます。Bashスクリプトには次のロジックがあります
- 本番環境と同様のディレクトリ構造の作成
- ソース管理からコードをチェックアウトする
- を使用してコードをコンパイルします
python -m compileall .
- ターボールを作成する
この tarball を運用サーバーで untar すると、アプリケーションは正常に動作するはずです。
Python でのパッケージ作成とベスト プラクティスの詳細については、このビデオをご覧ください。