0

私は運用サーバーに Django を設定していますが、この奇妙なエラーがあります (下の図)。ご覧のとおり、pythonpath は問題ないようです (最初の行は私のプロジェクト フォルダーです)。そこに初期化ファイルがあり、 ROOT_URLCONF = 'project.urls' があります(プロジェクト名なしでも試しましたが、どちらも役に立ちませんでした)。だから、それが見つからないのは奇妙です:(私はサーバー上に新しいプロジェクトを作成しようとしたと言わなければなりませんが、それは問題ないようですが、ローカルサーバーからコピーされたこのプロジェクトでは、次のように動作していますこれ。

エラーのプリントスクリーン:

エラー

4

2 に答える 2

0

実際、あなたのプロジェクトがあなたのパスにあるようには見えません。トレースバックには、Django パッケージのみが表示されます。

于 2014-08-03T18:37:30.290 に答える
0

私が考えることができる唯一の問題は、パッケージ作成のプロセスです。Django アプリケーションをデプロイするためにどのようなプロセスに従いましたか?

ローカル マシンまたは CI サーバーで Django アプリケーションをコンパイルし、コンパイル済みのパッケージをデプロイした場合、pyc ファイルにはローカル マシンまたは CI サーバーのハード コードされたパスが含まれるため、インポート モジュールの問題が発生します。Python ファイルをコンパイルする前に修正するには、ローカル/CI サーバーに同じ階層を作成してから、コンパイルしてデプロイする必要があります。

お役に立てれば。

[編集]

pyc ファイルのハードコードされたパスが PITA であることに同意します。これを発見した後、実稼働環境でこれを行っています。

ただし、サーバー上で pyc ファイルを再生成することに同意しません。アプリケーションが大きくなり、大規模なアプリケーションに移行すると、非常に遅くなるからです。

運用ディレクトリ構造に従うために、開発環境のディレクトリを保持する必要はありません。代わりに、開発マシンに任意のディレクトリ パスを設定し、本番環境で従うディレクトリ構造を作成することでパッケージを作成する別の bash スクリプトを作成できます。Bashスクリプトには次のロジックがあります

  • 本番環境と同様のディレクトリ構造の作成
  • ソース管理からコードをチェックアウトする
  • を使用してコードをコンパイルしますpython -m compileall .
  • ターボールを作成する

この tarball を運用サーバーで untar すると、アプリケーションは正常に動作するはずです。

Python でのパッケージ作成とベスト プラクティスの詳細については、このビデオをご覧ください。

于 2014-08-03T18:42:04.103 に答える