1

デフォルトの場所にある models.py モジュールに 2 つのモデル クラスがあります。

PythonFinal
    |_   manage.py
    |_  template
    |_ PythonFinal
    |       |_  __init__.py
    |       |_  settings.py
    |       |_  urls.py
    |       |_  swgi.py
    | 
    |      
    |___ fertility
            |_  __init__.py
            |_  models.py
            |_  tests.py
            |_  views.py
            |_  dateUtils.py

クラスをdateUtils.pyにインポートしたいだけです

from fertility.models import Cycle, Period

if __name__ == '__main__':
    p1 = Period(periodFirstDay='2012-7-26' , periodNumber=4) 

このモジュールを実行すると、

ImportError: no module named fertility

Python コマンドラインからモデルをインポートしようとすると、

import models    
Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "models.py", line 1, in <module>
        from django.db import models
      File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 11, in <module>
        if DEFAULT_DB_ALIAS not in settings.DATABASES:
      File "/usr/local/lib/python2.6/dist-packages/django/utils/functional.py", line 184, in inner
        self._setup()
      File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 40, in _setup
        raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
    ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

プロジェクトのルート フォルダーを ~/.bashrc の PYTHONPATH に追加しました。私の wsgi.py 読み取り

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PythonFinal.settings")

NamingError の代わりに ImportError を取得するため、循環インポートではないと思います。また、まだ多くのインポートを行っていません。明らかな理由から、モデルを単体テストできる他のモジュールにインポートできるようにする必要があるか、同じことを達成する別の単純なワークフローが必要です。

4

1 に答える 1

2

にある場合PythonFinalは、/home/users/jeremy/django/PythonFinal環境変数にある/home/users/jeremy/django必要があり、に設定する必要があります。次に、使用できますPYTHONPATHDJANGO_SETTINGS_MODULE"PythonFinal.PythonFinal.settings"

from PythonFinal.fertility.models import Cycle, Period

Python コマンドラインから。

ただし、settings.pyファイルを と同じフォルダに置く方が一般的manage.pyであり、多くのツールやチュートリアルではこの設定が想定されています...

于 2012-07-28T22:03:54.807 に答える