7

私はまだPythonにかなり慣れていません。

/libsいくつかのアプリとディレクトリを備えたDjangoWebサイトがあります。Djangoモデルを使用するcronジョブをいくつか追加する必要があります。私はすでにそれをすべて解決しました、大したことではありません。

ただし、インポートに問題があります。

これらのスクリプトを、それらが一般的に属するアプリに含めたいと思います。しかし、コマンドラインからスクリプトを実行すると、/libsディレクトリからモジュールをロードできません。

dir構造を具体的に説明するために、次の擬似コードを想像してください。

import ./../libs/mysharedlib.py   

言い換えると、スクリプトとsharedlibは次のとおりです。

~/project/myapp/myscript.py

~/project/libs/mysharedlib.py

自分に追加~/projectするだけでよいのPYTHONPATHですが、展開中にこれを行うことを心配する必要があり、壊れたように感じます。

スクリプトをアプリから移動して、アプリに配置する必要があり~/projectますか?もっと良い方法はありますか?

4

1 に答える 1

15

より良い方法があります。カスタム管理コマンドがこれを解決します。 https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

これらを使用すると、スタンドアロンのユーティリティスクリプトを作成できます。これらはcronとして、またはユーティリティとして実行できます。これらは、djangoアプリの他のモジュールとまったく同じパスを使用します。

これらはインポートの問題を解決しますが、libsディレクトリには__init__.pyファイルがありますか?ビューにlibディレクトリをインポートできますか?または、インポートがcronスクリプトで機能していませんか?いずれにせよ、カスタム管理コマンドはこれに対処します。

于 2012-08-18T15:16:37.953 に答える