我已按照Django docs中的步骤使一些Django-CMS插件可重复使用,Hitchhiker's guide to packaging将它们放在pypi上,因此可通过
获取pip install cmsplugin-rt
这将安装在python可以找到它们的某个地方。当然,我的开发目录在其他地方。
但是当我向这个包添加一些测试时,我收到了错误:
django.core.exceptions.ImproperlyConfigured: App with label cmsplugin_rt could not be found
需要进一步解释。由于包不是Django项目的一部分,即没有manage.py
文件来运行测试,我遵循了建议here at stackoverflow并将runtests.py
添加到tests
目录。特别是在这个文件中,我把:
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
吗?)
这是我的目录结构 - 我在一个包中有几个插件,这可能是问题的一部分。我按照你在这里看到的tests
目录,虽然我也试过了一级。
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
(遵循建议here),但我不确定它是否有任何区别。
答案 0 :(得分:2)
对于后人来说,这是我在第一次评论中提到的南迁移问题的解决方法。它不漂亮,所以我会喜欢任何关于如何改进它的建议。
向cmsplugin_rt.button
模型添加新字段的过程是:
site-packages/cmsplugin_rt/button
作为名为button
button/migrations/
目录button
添加到虚拟项目settings.py
的INSTALLED_APPS ./manage.py schemamigration --init button
,因此虚拟项目对数据库的理解与当前模型一致(在进行任何更改之前)./manage.py migrate button
,以更新虚拟项目的数据库model.py
文件以添加额外字段,并进行所需的任何其他更改。./manage.py schemamigration --auto button
,以生成迁移代码。这将在button/migrations/0002_auto__...
0001_initial.py
迁移文件,则前面的编号错误。将正确的数字复制到包开发目录中。同时复制您所做的任何模型,cms_plugin,模板和其他更改。