0

Django プロジェクトの開発環境を Eclipse に移行中です。

Python と Django が Eclipse で適切に動作しています。ただし、外部ライブラリを追加しようとすると、プロジェクトはそれらを見つけられません。

必要なモジュールを追加する方法は次のとおりです。

  1. プロジェクトを右クリックして [プロパティ] を選択する
  2. [外部ライブラリ] タブの選択
  3. ソースフォルダー(私の仮想環境にあります)または卵(そこにもあります)を追加します。

ただし、これを行うと(メッセージモジュールの場合)、どちらの場合でも、次の操作を行うとこのエラーが発生しますsyncdb:エラー:メッセージという名前のモジュールはありません

Eclipse を再起動しようとしましたが、まだうまくいきません。

4

2 に答える 2

0

私はdjangoを初めて使用するので、ベストプラクティスではないかもしれませんが、私にとってはうまくいきます:

  • PyDev を使用していますか? はいの場合、外部ライブラリは次のように your_workspace/your_project/.pydevproject ファイルに保存されます。
<path>/usr/local/lib/python2.7/dist-packages/django_annoying-0.7.6-py2.7.egg</path>
  • このパスは、開発時にコード補完や型のチェックなどに使用されるように思えますが、プロジェクトを実行するときに pythonpath にある必要があり、Eclipce はそれらを PATH に自動的に配置しません。

  • django アプリが PATH にあることを確認するために、次のようなものを settings_local.py に追加します。

# v                        PATHS SETTINGS                              v #

import os
import sys
PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '..')

# v                      3d-party django-apps                          v #

DJANGO_APPS_ROOT = os.path.join(PROJECT_ROOT, '..', '..', 'djaddons')

sys.path.insert(0, os.path.join(DJANGO_APPS_ROOT, 'south'))
sys.path.insert(0, os.path.join(DJANGO_APPS_ROOT, 'annoying'))

if CONF_APP_REGISTRATION_ENABLED:
    sys.path.insert(0, os.path.join(DJANGO_APPS_ROOT, 'registration'))

# v                        python libs                                 v #

PYTHON_LIBS_ROOT = os.path.join(PROJECT_ROOT, '..', '..', 'pylibs')

sys.path.insert(0, os.path.join(PYTHON_LIBS_ROOT, 'oauth2'))
sys.path.insert(0, os.path.join(PYTHON_LIBS_ROOT, 'httplib2'))

# ^                    END OF PATHS SETTINGS                           ^ #

(これは、環境に固有の settings.py の一部であり、開発コンピューターとサーバーで異なります)

  • または、sys.path.insert ステートメントをサーバー上の .wsgi ファイル (mod_wsgi を使用している場合) と manage.py ファイルに追加して、manage.py runserver でテストすることもできます。
于 2012-06-28T18:56:40.077 に答える
0

最も一般的なことは、間違ったパスを追加していることです...コマンドラインにあるものと、Eclipse内で実際に追加したパスを比較してください:

import sys 
print('\n'.join(sorted(sys.path)))

Eclipse内のパスを修正します。

于 2012-06-30T12:32:48.240 に答える