Django: 运行 "python manage.py runserver" 报错 "Segmentation fault"

6
我第一次按照Django网站上的教程安装Python和Django,之前所有步骤都很顺利,没有出现错误。现在我到了“开发服务器”部分,在项目目录下(即manage.py所在的位置)运行命令python manage.py runserver,但是出现了以下错误:

Segmentation fault

没有其他信息。有人知道这是怎么回事吗?我该如何解决?如果有影响的话,这是我的manage.py文件(在from django.core.management ...这一行中,django被标记为IDE(PyCharm)中的错误,错误提示为Unresolved reference 'django')。
#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "davilex.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

如果你认为 Unresolved reference 是问题所在... 你可以在 Stack Overflow 上找到相关的问题。 - Raja Simon
1
段错误通常与Python的低级问题有关:C库、操作系统甚至硬件。您使用的是什么系统? - Klaus D.
在使用Python3.7的Django和Postgres时,我遇到了问题。但是,当我基于Python3.6创建了一个虚拟环境后,它就可以正常工作了。 - Matthew Hegarty
5个回答

4

我在一个Django项目中遇到了类似情况,其中我使用了许多带有C扩展的软件包。在我运行Ubuntu系统包更新后,我突然发现manage.py命令崩溃了。原来,一些C扩展连接到系统库,如果软件包更新改变了这些库,就可能导致C扩展崩溃。

既然我已经在Python虚拟环境内安装了所有东西,我只需删除并重新生成它,这样就解决了错误。


使用pipenv时,我需要完全删除虚拟环境的目录,仅仅执行pipenv uninstall --allpipenv install是不够的。 - Alexander Köb

3
我曾经遇到过同样的问题,按照教程几乎完全照做(除了我在Windows使用git-bash,并使用"virtualenv"代替 "mkvirtualenv",并使用"source projectdir/Scripts/activate"代替 "workon projectdir")。
运行:
python -vvvvv manage.py runserver

给出警告,提醒我有需要运行的迁移(本 教程 中说要忽略这个)。

python manage.py migrate

尽管教程中说有些情况下可以跳过这一步,但实际上你可能无法这样做。完成此步骤后,runserver 就能正常运行了。


1

我在Mac上设置项目时遇到了类似的问题。最后发现是DATABASES中设置的值引起的。

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'blue9',
    'USER': 'root',
    'PASSWORD': 'root',
    'PORT': '',
    'HOST': ''
}

'PORT'和'HOST'的空值导致了问题。这些键不应该有空值。请提供一个有限的值或者完全不指定。


1
  1. install PyMysql:

    python3 -m pip install PyMysql

  2. Setting add mysql conf:

    DATABASES = {  
        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your database name',
        'USER': 'your user',
        'PASSWORD': 'your pwd',
        'HOST': 'ip',
        'PORT': 'port',
        }
    }
    
  3. __init__.py add
    import pymysql
    pymysql.install_as_MySQLdb()

enjoy~


1
我认为这个问题与数据库配置有关,第一步是检查postgres库的安装配置。
pip install psycopg2-binary==2.8.5

第二步 检查Django项目设置中的数据库配置:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': '<database_name>',
    'USER': '<user_name>',
    'PASSWORD': '<password>',
    'HOST': '<host-name>',
    'PORT': '<port number : default : 5432>',
}

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接