django manage.py执行命令报错,怎么回事,求大神解救

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django manage.py执行命令报错,怎么回事,求大神解救相关的知识,希望对你有一定的参考价值。

我在执行makemigrations命令的时候报错,错误信息如下,语法错误?不懂。

Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "D:\python\lib\site-packages\django\core\management\__init__.py", line 36
3, in execute_from_command_line
utility.execute()
File "D:\python\lib\site-packages\django\core\management\__init__.py", line 30
7, in execute
settings.INSTALLED_APPS
File "D:\python\lib\site-packages\django\conf\__init__.py", line 56, in __geta
ttr__
self._setup(name)
File "D:\python\lib\site-packages\django\conf\__init__.py", line 41, in _setup

self._wrapped = Settings(settings_module)
File "D:\python\lib\site-packages\django\conf\__init__.py", line 110, in __ini
t__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "D:\python\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 661, in exec_module
File "<frozen importlib._bootstrap_external>", line 767, in get_code
File "<frozen importlib._bootstrap_external>", line 727, in source_to_code
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "D:\python\Scripts\isoland\isoland\settings.py", line 98
AUTH_PASSWORD_VALIDATORS = [
^
SyntaxError: invalid syntax

这是因为旧版本和新的版本命令已经不一样 的问题。 我用的是django =1.8.3, 写好自己的model以后可以换成这样的命令来生成数据库表: python manage.py makemigrations books 然后:python manage.py sqlmigrate books 0001 这样就可以CREATE TA追问

还是同样报错,我发现运行manage.py就会报这个错误,无论命令是什么、这个怎么回事?

参考技术A 我也卡在这很久了,但是我过来了,又卡在别的地方了.
你先仔细的检查你的代码有没有打错,连一个空格都不行.
特别是models.py里面的
参考技术B python换成python3

如何查看在 Django 的 manage.py test 命令期间运行了哪些测试

【中文标题】如何查看在 Django 的 manage.py test 命令期间运行了哪些测试【英文标题】:How to see which tests were run during Django's manage.py test command 【发布时间】:2014-02-25 08:16:53 【问题描述】:

使用 Django 的 manage.py test 命令完成测试执行后,只有通过的测试数量会打印到控制台。

(virtualenv) G:\Project\>python manage.py test
Creating test database for alias 'default'...
True
..
----------------------------------------------------------------------
Ran 2 tests in 0.017s

OK
Destroying test database for alias 'default'...

有什么办法可以看到:

    实际执行了哪些测试 来自哪个模块 按什么顺序

我在文档中没有找到任何解决方案。

【问题讨论】:

【参考方案1】:

您可以将-v 2 传递给test 命令:

python manage.py test -v 2

运行此命令后,您将得到类似的结果(我使用的是 django 2,请随意忽略迁移/数据库的内容):

Creating test database for alias 'default' ('file:memorydb_default?mode=memory&cache=shared')...
Operations to perform:
  Synchronize unmigrated apps: messages, staticfiles
  Apply all migrations: admin, auth, contenttypes, sessions
Synchronizing apps without migrations:
  Creating tables...
   Running deferred SQL...
Running migrations:
  Applying contenttypes.0001_initial... OK
  ...
  Applying sessions.0001_initial... OK
System check identified no issues (0 silenced).
test_equal_hard (polls.tests.TestHard) ... ok      <--------+
test_equal_simple (polls.tests.TestSimple) ... ok  <--------+
                                                            |
                                                            |
           That's your tests!  >----------------------------+

顺便说一句,v 代表冗长(你也可以使用--verbosity=2):

python manage.py test --verbosity=2

这是python manage.py test --help的摘录:

-v 0,1,2,3, --verbosity 0,1,2,3

详细程度; 0=最小输出,1=正常输出, 2=详细输出,3=非常详细的输出

【讨论】:

我尝试了所有详细级别,但找不到显示没有迁移/数据库输出的单元测试的级别。如果没有 3rd 方库,这真的不可能吗? 要隐藏迁移日志,您可以执行类似python manage.py test -v 2 | grep test*【参考方案2】:

奈杰尔的回答很棒,而且绝对是入门门槛最低的选择。但是,您可以使用django_nose 获得更好的反馈(而且设置起来并不困难;)。

以下来自:BDD with Python

首先:安装一些要求:

pip install nose pinocchio django_nose

然后将以下内容添加到settings.py

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['--with-spec', '--spec-color']

然后正常运行测试:

python manage.py test

输出应该是这样的:

注意:您所测试的 cmets 可用于提供比名称更好的输出。

例如:

def test_something(self):
    """Something should happen"""
    ...

运行测试时会输出“Something should occur”。

加分项:您还可以生成/输出您的代码覆盖率:

pip install coverage

在 settings.py 中将以下内容添加到您的 NOSE_ARGS:'--with-coverage', '--cover-html', '--cover-package=.', '--cover-html-dir=reports/cover'

例如:

NOSE_ARGS = ['--with-spec', '--spec-color', 
         '--with-coverage', '--cover-html', 
         '--cover-package=.', '--cover-html-dir=reports/cover']

然后,当您运行 python manage.py test 时,您将获得一个很好的代码覆盖率摘要,以及在 reports/cover 中的一个简洁的 html 报告

【讨论】:

嗨@toast38coza。这很整洁。我是 Python 新手,很高兴看到格式良好的测试输出。我正在寻找 NOSE_ARGS 的文档,但我发现的内容都没有显示 --With-spec 和类似的。你能指点我吗?我基本上是想防止鼻子重复“类似于 TransactionTestCase,但使用transaction.atomic() 来实现测试隔离......nTestCase 可能是必要的(例如测试一些事务行为)。” @MacarioTala --with-spec 参数来自pinocchio 插件(你可以 pip install )。看看上面说的:“首先安装一些要求”。 是的。我已经安装好了。让我试着找到有关木偶奇遇记的文档。谢谢! 为了分享,我换掉了匹诺曹,因为它有点太冗长了,而不是分叉,我发现了这个:gfxmonk.net/dist/0install/rednose.xml,你可能也会喜欢它。

以上是关于django manage.py执行命令报错,怎么回事,求大神解救的主要内容,如果未能解决你的问题,请参考以下文章

Django :执行 python manage.py makemigrations 时报错 TypeError: __init__() missing 1 required positional a

如何解决在 Django 中执行 manage.py runserver 命令时的错误原因?

manage.py命令

如何直接从测试驱动程序调用自定义 Django manage.py 命令?

Django1.6 运行manage.py 报错解决办法(ImportError)

Django框架---- 常用命令