簡體   English   中英

Django:“python manage.py runserver”給出“分段錯誤”錯誤

[英]Django: 'python manage.py runserver' gives "Segmentation fault" error

我剛剛安裝了 Python 和 Django,同時按照 Django 站點上的本教程進行操作,到目前為止的所有內容都運行良好並且沒有產生任何錯誤。

現在我在“開發服務器”部分,在manage.py所在的項目目錄中運行命令python manage.py runserver時出現此錯誤:

分段故障

沒有其他的。

任何人都知道這里發生了什么以及我該如何解決這個問題?

如果重要的話,這是我的 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)

這發生在我的 Django 項目中,我有很多具有 C 擴展的包。 運行完Ubuntu系統包更新后,突然發現manage.py命令seg出錯了。 事實證明,一些 C 擴展將自己鏈接到系統庫,如果包更新更改了這些庫,可能會導致 C 擴展崩潰。

因為我已經在 Python virtualenv 中安裝了所有東西,所以我只是刪除並重新生成它,這修復了錯誤。

我幾乎一字不差地按照教程遇到了同樣的問題(除了我在 Windows 中使用 git-bash,並使用“virtualenv”代替“mkvirtualenv”和“source projectdir/Scripts/activate”代替“workon projectdir” .

跑步

python -vvvvv manage.py runserver

警告我有需要運行的遷移(教程說要忽略)

python manage.py migrate

在某些情況下,這可能不是您可以真正跳過的步驟,不管教程怎么說。 在此之后,runserver 正常運行。

我在 mac 上設置項目時遇到了類似的問題。 最后,由於在 DATABASES 中設置的值,結果變成了它。

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

“PORT”和“HOST”的空值導致了問題。 這些鍵不應具有空值。 要么提供有限值,要么根本不指定它們。

我認為這個問題與數據庫配置有關,第一步檢查 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>',
}

}

  1. 安裝 PyMysql:

    python3 -m pip install PyMysql

  2. 設置添加 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 添加
    import pymysql
    pymysql.install_as_MySQLdb()

享受~

只需在運行遷移或運行服務器命令之前輸入sudo。 例如,如果要運行遷移,請使用

sudo python manage.py migrate

或者如果你想運行服務器

sudo python manage.py runserver

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM