4

Djangoドキュメントの手順に従って、いくつかのDjango-CMSプラグインを再利用できるようにしました。また、Hitchhikerのパッケージ化ガイドに従って、プラグインをpypiに配置しました。

pip install cmsplugin-rt

これにより、Pythonがそれらを見つけることができる適切な場所にそれらがインストールされます。もちろん、開発ディレクトリは別の場所にあります。

しかし、このパッケージにいくつかのテストを追加すると、次のエラーが発生します。

django.core.exceptions.ImproperlyConfigured: App with label cmsplugin_rt could not be found

もう少し説明が必要です。パッケージはDjangoプロジェクトの一部ではないため、つまりテストを実行するためのファイルがないため、stackoverflowmanage.pyのアドバイスに従い、ディレクトリに追加しました。具体的には、このファイルに次のように記述します。runtests.pytests

import os, sys
from django.conf import settings

DIRNAME = os.path.dirname(__file__)
settings.configure(DEBUG=True,
    DATABASES={
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
         }
     },
    CMS_TEMPLATES = ( ('template_for_tests.html', 'Test template'), ),
    CMS_MODERATOR = False,
    CMS_PERMISSION = False,
    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.contrib.auth.context_processors.auth',
        'django.core.context_processors.i18n',
        'django.core.context_processors.request',
        'django.core.context_processors.media',
        'django.core.context_processors.static',
        'cms.context_processors.media',
        'sekizai.context_processors.sekizai',
    ),
    INSTALLED_APPS = (
        'cmsplugin_rt.button',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.admin',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'south',
        'cms',
        'mptt',
        'menus',
        'sekizai',
    ),
)

from django.test.simple import DjangoTestSuiteRunner
test_runner = DjangoTestSuiteRunner(verbosity=2)
failures = test_runner.run_tests(['cmsplugin_rt', ])
if failures:
    sys.exit(failures)

したがって、前述したように、実行するpython runtests.pyとエラーが発生します。

django.core.exceptions.ImproperlyConfigured: App with label cmsplugin_rt could not be found

どこが間違っているのですか?それとも、これを行うためのより良い方法はありますか?私はそこでいくつかのテストを受けたいです!

ありがとう!

(これが実行された場合、テストはパッケージの開発バージョンを使用して実行されますか、それともpipインストールからバージョンをプルしますかpip uninstall cmsplugin-rt?各実行の前に実行する必要がありますか?)

これが私のディレクトリ構造です-1つのパッケージにいくつかのプラグインがありますが、これは問題の一部である可能性があります。ここに表示されているようにディレクトリを配置しましたがtests、1つ上のレベルでも試しました。

cmsplugin-rt/
--README.txt
--LICENSE.txt
--MANIFEST.in
--setup.py
--cmsplugin_rt/
----__init__.py
----models.py
----button/
------__init__.py
------models.py
------cms_plugins.py
------templates/
----(other plugins)/
----tests/
------runtests.py
------mytests.py

models.py安全のために、トップレベルにも空を配置します(ここでのアドバイスに従います)が、違いが生じるかどうかはわかりません。

4

1 に答える 1

2

後世のために、ここに私が最初のコメントで述べた南の移住問題への私の回避策があります。かわいくないので、改善の仕方を教えてください。

cmsplugin_rt.buttonモデルに新しいフィールドを追加するプロセスは次のとおりです。

  1. 編集を行う前site-packages/cmsplugin_rt/buttonに、ダミーのDjango-CMSプロジェクトにと呼ばれるアプリとしてコピーしますbutton
  2. button/migrations/この新しいアプリのディレクトリを削除します
  3. buttonダミープロジェクトsettings.pyのINSTALLED_APPSに追加します
  4. を実行./manage.py schemamigration --init buttonすると、ダミープロジェクトによるデータベースの理解が現在のモデルと一致します(変更が行われる前)
  5. を実行./manage.py migrate buttonして、ダミープロジェクトのデータベースを更新します
  6. ダミープロジェクトのボタンのmodel.pyファイルを編集してフィールドを追加し、その他の必要な変更を加えます。
  7. を実行./manage.py schemamigration --auto buttonして、移行コードを生成します。これはになりますbutton/migrations/0002_auto__...
  8. このファイルはパッケージに入れる必要があるものですが、プラグイン0001_initial.pyに元々移行ファイル以外のものが含まれていると、先頭に間違った番号が表示されます。正しい番号でパッケージ開発ディレクトリにコピーします。また、モデル、cms_plugin、テンプレート、その他の変更をコピーします。
于 2013-03-05T01:35:28.220 に答える