Django หยุดทำงานกับ RuntimeError: populate () ไม่ได้ reentrant


124

ฉันได้พัฒนาเว็บแอปพลิเคชัน Django ที่ติดตั้งบนเซิร์ฟเวอร์ Apache ด้วย WSGI และทุกอย่างเป็นไปอย่างราบรื่น วันนี้ฉันได้ทำการเปลี่ยนแปลงเล็กน้อยในแอปของฉันเพื่อadmin.pyพยายามปรับแต่งอินเทอร์เฟซผู้ดูแลระบบ Django ในตัวและในตอนแรกเกิดข้อผิดพลาดทางไวยากรณ์ (วงเล็บที่ไม่ปิด) นั่นหมายความว่าเมื่อฉันแตะwsgi.pyและโหลดโค้ด (ฉันมี WSGI ที่ทำงานในโหมด daemon บนโฮสต์เสมือนของฉัน) เว็บไซต์ของฉันถูกแทนที่ด้วย Internal Server Error เนื่องจาก WSGI หยุดทำงานเมื่อเกิดข้อผิดพลาดทางไวยากรณ์

ดังนั้นฉันจึงแก้ไขข้อผิดพลาดทางไวยากรณ์ตรวจสอบว่าฉันไม่มีอะไรอีกmanage.py checkแล้วและแตะwsgi.pyเพื่อปรับใช้ใหม่ แต่เว็บไซต์ของฉันยังคงแสดง Internal Server Error! ตรวจสอบบันทึก Apache นี่คือสิ่งที่ฉันเห็น:

[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Create interpreter 'quotes.cs.cornell.edu|'.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/extra/www/html/quotes/quotes_django' to path.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/' to path.
[Sun Nov 23 13:52:46 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
  application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_django/quotes_django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_django/quotes_django/wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/extra/www/html/quotes/quotes_django/
quotes_django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     application = get_wsgi_application()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     django.setup()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/__init__.py", line 21, in setup
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/apps/registry.py", line 115, in populate
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     app_config.ready()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/contrib/admin/apps.py", line 22, in ready
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     self.module.autodiscover()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/contrib/admin/__init__.py", line 23, in autodiscover
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     autodiscover_modules('admin', register_to=site)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/utils/module_loading.py", line 74, in autodiscover_modules
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     import_module('%s.%s' % (app_config.name,         
module_to_search))
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/usr/lib64/python2.7/importlib/__init__.py", line 
37, in import_module
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     __import__(name)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]   File "/extra/www/html/quotes/quotes_django/quotespage/
admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]     approve_quotes.short_description = "Approve selected
quotes"
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]                  ^
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] SyntaxError: invalid syntax
[Sun Nov 23 13:53:36 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
  application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_django/quotes_django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_django/quotes_django/wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/extra/www/html/quotes/quotes_django/         
quotes_django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     application = get_wsgi_application()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     django.setup()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/__init__.py", line 21, in setup
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]   File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/apps/registry.py", line 78, in populate
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19]     raise RuntimeError("populate() isn't reentrant")
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] RuntimeError: populate() isn't reentrant

ข้อผิดพลาดชุดแรกแสดงว่า WSGI ล้มเหลวเนื่องจากข้อผิดพลาดทางไวยากรณ์ในadmin.pyไฟล์. อย่างไรก็ตามข้อผิดพลาดชุดที่สองดูเหมือนว่าจะแสดงข้อผิดพลาดภายใน Django:

RuntimeError: populate() isn't reentrant

โยนจากpopulateวิธีการของregistry.py.

Googling ข้อความแสดงข้อผิดพลาดนี้ส่งคืนข้อมูลเพียงเล็กน้อยอย่างน่าประหลาดใจโดยไม่มีเลยจากเอกสารของ Django เห็นได้ชัดว่าบางครั้งอาจเกิดขึ้นได้หากคุณตั้งชื่อแอปสองครั้งในตัวคุณsettings.pyแต่ฉันไม่ได้ทำอย่างนั้น ที่สำคัญผมยังไม่ได้เปลี่ยนsettings.pyตั้งแต่จุดที่เว็บไซต์ได้รับการปรับการทำงาน - admin.pyสิ่งเดียวที่ฉันเปลี่ยนเป็น

ฉันพยายามคืนค่าการเปลี่ยนแปลงทั้งหมดที่ฉันทำดังนั้นรหัส Python ทั้งหมดของฉันจึงกลับมาอยู่ในสถานะเดิมเมื่อเว็บไซต์กำลังทำงาน - และฉันยังคงได้รับpopulate() isn't reentrantข้อผิดพลาดเมื่อฉันพยายามทำให้ WSGI โหลดโค้ดซ้ำ!

ฉันได้ลองแสดงความคิดเห็นแอพต่างๆในส่วน INSTALLED_APPS ของsettings.pyและแม้จะเปิดใช้งาน 'django.contrib.staticfiles' เท่านั้น แต่ข้อผิดพลาดก็ยังคงเกิดขึ้น น่าแปลกที่ฉันยังคงได้รับข้อผิดพลาดแม้ว่าฉันจะแสดงความคิดเห็นเกี่ยวกับแอพทั้งหมด - Django แสดงข้อผิดพลาดแม้ว่าจะไม่ได้โหลดแอพใด ๆ ก็ตาม!

มีใครรู้บ้างว่าเกิดอะไรขึ้นที่นี่? หรือวิธีที่ดีกว่าสำหรับฉันในการแก้ไขข้อผิดพลาดนี้เนื่องจากการย้อนกลับในบันทึก Apache นั้นไม่เป็นประโยชน์เลย?

หมายเหตุ: ฉันใช้ Django 1.7, Apache 2.2 และ Python 2.7


2
ฉันจะลองลบไฟล์. pyc ทั้งหมดที่อาจอยู่รอบ ๆ
dukebody

ไม่การลบไฟล์. pyc ทั้งหมดไม่ได้ช่วยอะไร การแตะwsgi.pyผลลัพธ์จะเกิดข้อผิดพลาด Apache เดียวกันและไฟล์. pyc จะไม่ถูกสร้างขึ้นใหม่
Edward

1
คุณลองรีสตาร์ท Apache แล้วหรือยัง?
dukebody

ฉันไม่สามารถรีสตาร์ท Apache ได้เนื่องจากฉันไม่มีสิทธิ์ในเซิร์ฟเวอร์นี้ ผู้ดูแลระบบที่มีสิทธิ์เข้าถึงระดับรากจะไม่กลับมาที่สำนักงานจนกว่าจะถึงวันจันทร์
Edward

ในกรณีของฉันมันไม่ได้ติดตั้งแอพจาก INSTALLED_APPS ในสภาพแวดล้อม
maciek

คำตอบ:


100

สาเหตุนี้เกิดจากจุดบกพร่องในการตั้งค่า Django ของคุณที่ใดที่หนึ่ง น่าเสียดายที่ Django ซ่อนข้อผิดพลาดไว้เบื้องหลังข้อความแสดงข้อผิดพลาดทั่วไปและไม่เป็นประโยชน์นี้

หากต้องการเปิดเผยปัญหาที่แท้จริงให้เปิดdjango/apps/registry.pyและรอบบรรทัด 80 แทนที่:

raise RuntimeError("populate() isn't reentrant")

ด้วย:

self.app_configs = {}

สิ่งนี้จะช่วยให้ Django โหลดต่อได้และเปิดเผยข้อผิดพลาดที่แท้จริง

ฉันพบข้อผิดพลาดนี้จากหลายสาเหตุ ครั้งหนึ่งเคยเป็นเพราะฉันมีการนำเข้าที่ไม่ถูกต้องใน admin.py ของแอปหนึ่งของฉัน


22
นี่เป็นคำตอบที่มีประโยชน์ที่สุดในชุดข้อความนี้ ตอนนี้ฉันรู้แล้ว ->django.core.exceptions.ImproperlyConfigured: psycopg2_version 2.5.4 or newer is required; you have 2.5 (dt dec pq3 ext)
RickyA

2
ช่วยชีวิตฉันไว้. โซลูชันนี้ทำให้ฉันสามารถตรวจสอบข้อกำหนดที่ขาดหายไปและข้อผิดพลาดเกี่ยวกับความเข้ากันได้ระหว่างกันได้สำเร็จ
ÁngelJiménez

1
มันสมบูรณ์แบบ การเปลี่ยนบรรทัดนั้นทำให้ฉันเห็นว่ามีข้อผิดพลาดในการนำเข้า ฉันไม่สามารถบอกได้ว่าเกิดอะไรขึ้นก่อนหน้านั้น
James

4
คำตอบนี้คือทองคำบริสุทธิ์
xpanta

2
@RickyA และนี่เป็นความคิดเห็นที่มีประโยชน์ที่สุดเพราะฉันไม่ต้องกังวลกับคำตอบนี้และเพิ่งลองpip install --upgrade psycopg2และแก้ไข
ผู้ใช้

65

ผู้ดูแลระบบเซิร์ฟเวอร์ของฉันรีสตาร์ท Apache และแก้ไขปัญหานี้ได้อย่างน่าอัศจรรย์ populate() isn't reentrantไฟล์หลามเดียวกันแน่นอนโหลดไม่ก่อให้เกิด ฉันลองโหลดไฟล์อื่นด้วยข้อผิดพลาดทางไวยากรณ์จากนั้นแก้ไขและเซิร์ฟเวอร์สามารถโหลดไฟล์ใหม่และทำงานได้อย่างถูกต้องโดยไม่มีปัญหา

ฉันยังไม่รู้ว่าเกิดอะไรขึ้น แต่ฉันกำลังทำเครื่องหมายว่าตอบแล้วเนื่องจากปัญหาหมดแล้ว (ฉันจะทำเครื่องหมายว่าตอบทันทีที่ StackOverflow อนุญาตให้ฉันยอมรับคำตอบของตัวเอง)

อัปเดต : หลังจากได้รับข้อผิดพลาดนี้อย่างต่อเนื่องเมื่อฉันอัปโหลด Python โดยไม่ได้ตั้งใจด้วยข้อผิดพลาดทางไวยากรณ์ฉันพบวิธีแก้ปัญหาที่ง่ายกว่าการรีสตาร์ท Apache เมื่อ WSGI เริ่มโยนpopulate() isn't reentrantข้อผิดพลาดฉันแทนที่โครงการ Django wsgi.pyด้วยฟังก์ชั่นง่ายๆนี้:

def application(environ, start_response):
    if environ['mod_wsgi.process_group'] != '': 
        import signal
        os.kill(os.getpid(), signal.SIGINT)
    return ["killed"]

จากนั้นฉันโหลดเว็บไซต์ของฉันใหม่และกระบวนการ WSGI daemon จะรีสตาร์ท (ซึ่งฉันสามารถบอกได้โดยดูที่บันทึก Apache แม้ว่าเว็บไซต์จะยังคงแสดงข้อผิดพลาด 500 เหมือนเดิมก็ตาม)

ถ้าฉันเปลี่ยนwsgi.pyกลับเป็นปกติและโหลดใหม่อีกครั้ง WSGI สามารถหยิบรหัสของฉันได้สำเร็จโดยไม่ต้องโยนpopulate() isn't reentrant(สมมติว่าฉันไม่มีข้อผิดพลาดทางไวยากรณ์ในครั้งนี้) ดังนั้น Apache ทั้งหมดจึงไม่จำเป็นต้องรีสตาร์ทเพียงแค่กระบวนการ WSGI และฉันสามารถทำได้โดยไม่ต้องมีสิทธิ์รูท


8
สำหรับฉันปัญหาคือไม่ได้ย้ายการเปลี่ยนแปลงที่ฉันทำกับโมเดลในแอปของฉัน
user2662692

ตกลงฉันประสบปัญหาเกือบเหมือนกันและใช่ได้รับการแก้ไขเมื่อรีบูตเครื่องและรีสตาร์ทเซิร์ฟเวอร์ แต่ปัญหายังคงเกิดขึ้นซ้ำซาก บางครั้งในทันที ภายในหนึ่งเดือนมันเกิดขึ้นสามครั้ง หากใครมีความคิดโปรดช่วยด้วย
Rohit

@Rohit ถ้าคุณต้องการความช่วยเหลือเกี่ยวกับสถานการณ์ของคุณคุณควรโพสต์คำถามใหม่เพื่ออธิบายเรื่องนี้ คุณไม่น่าจะได้รับคำตอบในความคิดเห็นที่นี่
Edward

4
มีstartup-timeoutตัวเลือกสำหรับโหมด daemon ของ mod_wsgi ใน mod_wsgi เวอร์ชันล่าสุดซึ่งช่วยในการกู้คืนจากข้อผิดพลาดชั่วคราวเมื่อ Django กำลังเริ่มต้นเช่นฐานข้อมูลไม่พร้อมใช้งาน การหมดเวลาจะทำให้กระบวนการเริ่มต้นใหม่โดยอัตโนมัติหากแอปพลิเคชัน WSGI ไม่โหลดอย่างถูกต้องหลังจากช่วงหมดเวลา แม้ว่าจะไม่ช่วยให้คุณมีปัญหาถาวรเกี่ยวกับรหัสของคุณเอง ในกรณีนั้นให้มองหาข้อผิดพลาดแรกไม่ใช่populate()ข้อผิดพลาดเนื่องจากจะให้สาเหตุที่แท้จริงที่รหัสของคุณล้มเหลว
Graham Dumpleton

1
คุณหมายถึงอะไร "Django project's wsgi.py with this simple function"? คุณจะแทนที่ไฟล์ด้วยฟังก์ชันได้อย่างไร?
Cerin

46

ฉันรู้ว่านี่เป็นคำตอบเก่า แต่ฉันจะมีส่วนร่วมในการแก้ไข:

เพื่อเป็นวิธีวินิจฉัยต้นตอของปัญหาให้รันmanage.py checkและดูว่าคุณพบอะไรที่นั่นหรือไม่

ในกรณีของฉันข้อกำหนดที่ล้าสมัยคือปัญหาและ django ไม่สามารถนำเข้าโมดูลย่อยได้

ตรวจสอบให้แน่ใจว่าความต้องการของคุณเป็นปัจจุบัน


2
ฉันได้รับ Error 500 บน Apache และไม่พบปัญหา ด้วยคำสั่งนี้manage.py checkฉันพบปัญหา ขอบคุณ.
Ali Hesari

13

ไม่ใช่การตอบสนอง แต่เป็นการสะท้อนกลับ

เมื่อคุณอัปเกรดเป็น django 1.7 และคุณมีข้อผิดพลาด 500 และโหลดหน้าของคุณซ้ำ Apache จะแจ้งว่า "populate () ไม่ได้ reentrant" ฉันคิดว่าเมื่อคุณโหลดหน้าของคุณ Apache จะโหลดโมดูลทั้งหมดที่คุณต้องการสำหรับแอปของคุณและเมื่อจัดการข้อผิดพลาดมันจะไม่ยกเลิกการโหลดโมดูล ดังนั้นเมื่อคุณโหลดหน้าซ้ำ apache จะโหลดโมดูลเหล่านี้อีกครั้ง แต่โหลดแล้ว ดังนั้น apache จึงบอกว่า "populate () ไม่ได้ reentrant"

ฉันดำเนินการสองอย่างเพื่อแก้ไขสิ่งนี้: รีสตาร์ท apache หรือแก้ไขข้อผิดพลาดที่จัดการข้อผิดพลาด 5OO แรก

ลองรีสตาร์ท apache ด้วย:

sudo service httpd restart

ฉันหวังว่ามันจะช่วยคุณได้


10

หากคุณได้รับข้อผิดพลาดนี้เมื่อใช้ Google App Engine ให้ตรวจสอบบันทึกเพื่อหาข้อผิดพลาดอื่น ๆ ที่อาจทำให้เกิดปัญหานี้ ฉันได้รับ:

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

คุณไม่สามารถใช้ SQLite กับ Google App Engine ได้ดังนั้นการแสดงความคิดเห็นในDATABASESส่วนของการsettings.pyหยุดข้อผิดพลาดนั้นและRuntimeError("populate() isn't reentrant")ข้อผิดพลาดนั้นด้วย


สิ่งนี้อธิบายว่าเหตุใดทุกอย่างจึงทำงานได้ดีในเครื่อง แต่มีข้อผิดพลาด 500 เมื่อปรับใช้กับ GAE คำใบ้เล็ก ๆ : การค้นหาข้อความ "เพิ่ม" ในหน้าบันทึก GAE ทำให้เกิดการกดครั้งเดียวที่แน่นอนซึ่งนำไปสู่ข้อความแสดงข้อผิดพลาดที่ผู้ไม่ประสงค์ออกนาม วิธีแก้ปัญหาของเขาช่วยวันของฉัน :-)
Golden Thumb

4

คุณอาจสามารถแก้ไขได้โดยไม่ต้องรีสตาร์ท Apache โดยแตะไฟล์ (นอกเหนือจาก wsgi.py) ที่อยู่ในขั้นตอนการโหลดในช่วงต้น ตัวอย่างเช่นไฟล์การตั้งค่าของคุณ:

$ touch settings.py

ฉันยังไม่ได้แก้ไขสิ่งนี้อย่างถูกต้อง แต่ข้อมูลเพิ่มเติมในคำถามของฉันที่นี่: การตรวจสอบการเปลี่ยนแปลงรหัสทำงานผิดปกติกับ Django 1.7 บน mod-wsgi



2

ฉันเพิ่งประสบปัญหาเดียวกันดังนั้นฉันจึงเริ่มมองไปรอบ ๆ

ตอนนี้ฉันใช้งานได้แล้วดังนั้นฉันจึงคิดว่าฉันควรแบ่งปันกับพวกคุณ!

ทั้งหมดที่ฉันไม่ได้ทำchown user:group /to/path -Rและchmod 770 /to/path -Rอีกครั้งและมันทำงาน


2

ดูเหมือนว่าชุดคำตอบที่ถูกต้องสำหรับข้อผิดพลาด Apache mod-wsgi เดียวกันแต่ละคนโพสต์สิ่งที่เหมาะกับเขาดังนั้นนี่คือของฉัน:

อย่าลืมอัปเดตความต้องการโครงการของคุณหลังจากปรับใช้ :)


2

ฉันประสบปัญหาเดียวกันนี้และที่มาของข้อผิดพลาดสำหรับฉันเป็นเพียงข้อผิดพลาดทางไวยากรณ์ในไฟล์ที่ฉันใช้งานอยู่ หลังจากแก้ไขคำผิดแล้วpopulate() is not reentrantข้อผิดพลาดก็หายไป

หากคุณกำลังเรียกใช้ django จากสคริปต์ wsgi คุณอาจสามารถระบุการพิมพ์ผิดได้โดยเพียงแค่เรียกใช้สคริปต์ wsgi จากบรรทัดคำสั่ง ตัวอย่างเช่น:

cd /usr/local/www/wsgi-scripts/
python djangolauncher.wsgi

2

ข้อผิดพลาดนี้ยังเกิดขึ้นหากการใช้พื้นที่และแท็บในโค้ดไม่สอดคล้องกัน


1

การตั้งค่า: Ubuntu 14.04, Django 1.10, Python 3.5 (in virtualenv)

ฉันลองใช้วิธีแก้ปัญหาเหล่านี้หลายวิธีโดยไม่มีโชค แต่แล้วฉันก็สังเกตเห็นว่าบันทึกข้อผิดพลาด Apache มีข้อผิดพลาดที่แตกต่างกันสองข้อในกรณีของฉัน สิ่งที่เกิดขึ้นเมื่อมีคนพยายามเข้าชมเพจอีกเพจหนึ่งที่เกิดขึ้นเมื่อเริ่มต้น ฉันพลาดการเริ่มต้นระบบเพราะโดยปกติฉันพยายามรีเฟรชหน้าสองสามครั้งจึงเห็นข้อผิดพลาดในการเยี่ยมชมซ้ำสองสามครั้งเท่านั้น

จากนั้นผมก็สืบค้นสำหรับการแก้ปัญหาข้อผิดพลาดของการเริ่มต้นแทนและวิธีการแก้คำถามนี้ทำงานให้ฉัน โดยสังเขปเกี่ยวข้องกับการอัปเดตmod_wsgiแพคเกจในลักษณะวงเวียน

ฉันได้รับคำเตือนเป็นเวลาหลายเดือนเกี่ยวกับmod_wsgiเวอร์ชันที่ไม่ตรงกันแต่ทันใดนั้นก็ส่งผลให้เกิดข้อผิดพลาด Apache 500 ไม่สมเหตุสมผลกับฉันเลย

ฉันเดาว่าRuntimeError: populate() isn't reentrantข้อผิดพลาดนี้มักเป็นสัญญาณว่าควรมองหาข้อผิดพลาดในการเริ่มต้นซึ่งบ่งบอกถึงปัญหาที่แท้จริง

ในการเยี่ยมชม

[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant

เริ่มต้น

[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant
[Sat Oct 15 03:38:43.291502 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.291579 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.291604 2016] [:error] [pid 28272]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.292356 2016] [:error] [pid 28272]     assert tlock is not None
[Sat Oct 15 03:38:43.292377 2016] [:error] [pid 28272] AssertionError: 
[Fri Oct 14 23:38:43.412942 2016] [:error] [pid 28299] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.413044 2016] [:error] [pid 28299] Traceback (most recent call last):
[Fri Oct 14 23:38:43.413076 2016] [:error] [pid 28299]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.425037 2016] [:error] [pid 28275] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.425125 2016] [:error] [pid 28275] Traceback (most recent call last):
[Fri Oct 14 23:38:43.425157 2016] [:error] [pid 28275]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.427625 2016] [:error] [pid 28274] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.427694 2016] [:error] [pid 28274] Traceback (most recent call last):
[Fri Oct 14 23:38:43.427722 2016] [:error] [pid 28274]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.432020 2016] [:error] [pid 28273] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.432078 2016] [:error] [pid 28273] Traceback (most recent call last):
[Fri Oct 14 23:38:43.432105 2016] [:error] [pid 28273]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.438577 2016] [:error] [pid 28299]     assert tlock is not None
[Fri Oct 14 23:38:43.438654 2016] [:error] [pid 28299] AssertionError: 
[Fri Oct 14 23:38:43.442174 2016] [:error] [pid 28274]     assert tlock is not None
[Fri Oct 14 23:38:43.442226 2016] [:error] [pid 28274] AssertionError: 
[Fri Oct 14 23:38:43.447227 2016] [:error] [pid 28276] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.447294 2016] [:error] [pid 28276] Traceback (most recent call last):
[Fri Oct 14 23:38:43.447326 2016] [:error] [pid 28276]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.448813 2016] [:error] [pid 28277] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.448876 2016] [:error] [pid 28277] Traceback (most recent call last):
[Fri Oct 14 23:38:43.448903 2016] [:error] [pid 28277]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.450188 2016] [:error] [pid 28273]     assert tlock is not None
[Fri Oct 14 23:38:43.450231 2016] [:error] [pid 28273] AssertionError: 
[Fri Oct 14 23:38:43.456680 2016] [:error] [pid 28275]     assert tlock is not None
[Fri Oct 14 23:38:43.456737 2016] [:error] [pid 28275] AssertionError: 
[Fri Oct 14 23:38:43.461761 2016] [:error] [pid 28277]     assert tlock is not None
[Fri Oct 14 23:38:43.461826 2016] [:error] [pid 28277] AssertionError: 
[Fri Oct 14 23:38:43.466165 2016] [:error] [pid 28276]     assert tlock is not None
[Fri Oct 14 23:38:43.466219 2016] [:error] [pid 28276] AssertionError: 
[Fri Oct 14 23:38:43.658971 2016] [mpm_prefork:notice] [pid 28268] AH00169: caught SIGTERM, shutting down
[Sat Oct 15 03:38:43.691909 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.691968 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.691996 2016] [:error] [pid 28272]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.693126 2016] [:error] [pid 28272]     assert tlock is not None
[Sat Oct 15 03:38:43.693159 2016] [:error] [pid 28272] AssertionError: 
[Fri Oct 14 23:38:44.490316 2016] [:warn] [pid 28349] mod_wsgi: Compiled for Python/3.4.0.
[Fri Oct 14 23:38:44.490407 2016] [:warn] [pid 28349] mod_wsgi: Runtime using Python/3.4.3.
[Fri Oct 14 23:38:44.505672 2016] [mpm_prefork:notice] [pid 28349] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.19 mod_wsgi/3.4 Python/3.4.3 configured -- resuming normal operations
[Fri Oct 14 23:38:44.505764 2016] [core:notice] [pid 28349] AH00094: Command line: '/usr/sbin/apache2'

สร้างคำถามใหม่ อย่าถามคำถามเป็นคำตอบ
Graham Dumpleton

1
ฉันไม่ได้ถามคำถาม โพสต์วิธีแก้ปัญหาเดียวกับที่ได้ผลสำหรับฉัน Apache แสดงข้อผิดพลาด 500 และข้อผิดพลาดในล็อกไฟล์เหมือนกับข้อผิดพลาดในคำถามที่ถามที่นี่ โปรดอ่านคำตอบของฉันอีกครั้ง :)
CoderGuy123

จากนั้นใส่คำตอบที่แท้จริงไว้ในคำตอบของคุณแทนที่จะเชื่อมโยงไปยังคำถามอื่น ปัญหาคือแม้ว่าโพสต์อื่นนั้นไม่ได้กล่าวถึงpopulate()ปัญหาเลยและสำหรับฉันแล้วดูเหมือนปัญหาที่แตกต่างไปจากเดิมอย่างสิ้นเชิงดังนั้นฉันจึงไม่เห็นว่าคุณคิดว่ามันแก้ปัญหาเดียวกันได้อย่างไร เท่าที่ทุกคนสามารถบอกได้คุณมีปัญหาที่แตกต่างออกไปซึ่งคุณควรจะถามคำถามแยกต่างหากตั้งแต่เริ่มแรกแทนที่จะสับสนกับคำตอบที่นี่สำหรับสิ่งที่ดูเหมือนปัญหาอื่นตามรายละเอียดในโพสต์อื่นนั้น ..
Graham Dumpleton

ไม่จำเป็นต้องทำซ้ำขั้นตอนที่นี่ ข้อผิดพลาดปรากฏในบันทึกเดียวกันเพียงแต่ว่า OP ที่นี่ไม่ได้รวมไว้ทั้งหมด ข้อผิดพลาดหนึ่งจะปรากฏขึ้นเมื่อมีการเข้าถึงเพจ (นั่นคือส่วนใน OP ที่นี่) อีกข้อเมื่อ Apache เริ่มทำงาน (นั่นคือส่วนหนึ่งในเธรดอื่น)
CoderGuy123

1

ฉันรู้ว่ามีการถามคำถามนี้มาระยะหนึ่งแล้ว แต่ฉันเพิ่งพบปัญหานี้เนื่องจากปัญหาที่ฉันไม่ได้พูดถึงที่นี่ ฉันได้รับRuntimeError: populate() isn't reentrantข้อผิดพลาดเนื่องจาก SELinux บน CentOS 7 ฉันให้ Django ออกจากโฮมไดเร็กทอรีและฉันต้องเปิดใช้งานบูลีนของ SELinux ที่อนุญาตให้อ่านไดเร็กทอรีหลักเนื่องจากข้อผิดพลาด populate () เกิดจากปัญหาสิทธิ์ setsebool -P httpd_read_user_content 1วิธีการแก้ปัญหาสำหรับผมก็คือ ฉันหวังว่านี่จะช่วยคนที่มีปัญหานี้


เรามีปัญหาเดียวกันกับ CentOS 7 และ SELinux เราแก้ไขโดยใช้chconเพื่อเปลี่ยนบริบทของ.soไฟล์ปัญหาเป็นhttpd_sys_script_exec_t .
จอน

1

คำตอบมากมายทำให้ชัดเจน นี่เป็นข้อผิดพลาดทั่วไปที่อาจมีสาเหตุหลายสาเหตุโดยทั่วไปเกี่ยวข้องกับการโหลด Apache / WSGI

คำตอบเหล่านี้ทั้งหมดในหน้านี้ควรทำหน้าที่เป็นรายการตรวจสอบประเภทหนึ่งและในหลอดเลือดดำนั้นฉันต้องการเพิ่มสาเหตุที่แท้จริงของอินสแตนซ์ของข้อผิดพลาดนี้: ความล้มเหลวในการเพิ่ม 'import os' ลงในไฟล์ settings.py ของคุณ

โดยเฉพาะอย่างยิ่งเรามีนักพัฒนาในทีมของเราที่ตั้งใจจะลบแพ็กเกจที่ไม่จำเป็นออกและนำ 'import os' ออกจากด้านบนของไฟล์ production settings.py แทน หลังจากรีสตาร์ท apache แอปพลิเคชันของเราจะไม่รีสตาร์ทและเราได้รับข้อผิดพลาด 'RuntimeError: populate () ไม่ได้ reentrant' ที่น่ากลัว

'python Manage.py check' อย่างรวดเร็วไม่ได้เปิดเผยปัญหา แต่มี 'python settings.py'; ไม่ได้โหลดแพ็คเกจระบบปฏิบัติการ

หากคุณมีข้อผิดพลาดนี้ให้เน้นการค้นหาของคุณไปที่การตรวจสอบไฟล์ settings.py และไฟล์ WSGI ของคุณ


3
ที่สำคัญตรวจสอบให้แน่ใจว่าคุณย้อนกลับไปในบันทึกข้อผิดพลาดและมองหาข้อความแสดงข้อผิดพลาดแรกที่เกิดขึ้นหลังจากรีสตาร์ทกระบวนการ Apache หรือ mod_wsgi daemon ข้อผิดพลาดแรกจะบอกคุณถึงสาเหตุที่แท้จริงของข้อผิดพลาดคำขอใด ๆ หลังจากนั้นสำหรับกระบวนการเดียวกันจะกล่าวถึงreentrantข้อผิดพลาดเท่านั้น ในโหมด daemon ตรวจสอบให้แน่ใจว่าคุณกำลังใช้startup-timeoutอ็อพชันหากคุณมีปัญหานี้เนื่องจากข้อผิดพลาดชั่วคราวแทนที่จะเป็นข้อผิดพลาดในการเข้ารหัส อย่างน้อยวิธีนั้นก็สามารถกู้คืนได้โดยอัตโนมัติ
Graham Dumpleton

นี่คือคำตอบที่ถูกต้องข้อผิดพลาดทั่วไปตรวจสอบข้อความก่อนรันไทม์
Popieluch

1

RuntimeError: populate() isn't reentrant

อาจเป็นอะไรก็ได้นั่นคือเหตุผลที่มีคำตอบที่แตกต่างกันมากมายสำหรับคำถามนี้

เคล็ดลับคือการดูข้อความแสดงข้อผิดพลาดก่อนหน้าไฟล์RuntimeError. ในกรณีของคุณดูเหมือนว่าจะมีข้อผิดพลาดทางไวยากรณ์ในไฟล์ /extra/www/htmlquotes/quotes_django/quotespage/admin.py ในบรรทัดที่ 15 โปรดดู:

Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/htmlquotes/quotes_django/quotespage/admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] pprove_quotes.short_description = "Approve selected quotes"
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19]                  ^
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] SyntaxError: invalid syntax

1

หมายเหตุเกี่ยวกับ AWS Elastic Beanstalk: ค่าเริ่มต้นsettings.pyที่เขียนโดย Django-admin รวมถึงการอ้างอิงฐานข้อมูล sqlite ในเครื่องเป็นแหล่งข้อมูล สิ่งนี้น่าจะใช้ได้กับระบบปฏิบัติการในพื้นที่ของคุณ แต่ไม่ใช่บน AWS EB และจะทำให้เกิดpopulate() isn't reentrantข้อผิดพลาดรันไทม์ ในการทดสอบสิ่งนี้เพียงแค่แสดงความคิดเห็นในDATABASES={<...>}คำสั่งsettings.pyปรับใช้และเปิดแอปพลิเคชันอีกครั้ง


สิ่งนี้เกิดขึ้นเช่นหากคุณปรับใช้กับ AWS EB โดยใช้ Django เวอร์ชัน 2.2 (หรือใหม่กว่า) ด้วยฐานข้อมูล sqlite เริ่มต้น คุณจะdjango.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).ตามด้วยไฟล์RuntimeError: populate() isn't reentrant. จากเอกสาร AWS : "Django 2.2 เข้ากันไม่ได้กับแพลตฟอร์ม Elastic Beanstalk Python 3.6" (ในขณะที่เขียน)
djvg

0

ฉันมีปัญหานี้และไม่พบคำตอบว่าทำไมจนกว่าฉันจะย้อนรอยการกระทำของฉัน เห็นได้ชัดว่าฉันได้เพิ่มการนำเข้าโดยไม่ได้ตั้งใจเนื่องจากการเติมข้อความอัตโนมัติทำให้การตั้งค่าผิดพลาด

# found in models.py from msilib.schema import SelfReg

ในบันทึกข้อผิดพลาด apache: RuntimeError ("populate () ไม่ reentrant")

ทำงานได้ดีในสภาพแวดล้อม windows dev ของฉัน แต่ล้มเหลวบนเซิร์ฟเวอร์ ubuntu / apache


0

ฉันพบข้อผิดพลาดเดียวกันนี้หลังจากเปลี่ยนลำดับของการตั้งค่านี้:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

วางไว้ในคำสั่งซื้อที่นี่ก่อนหน้านี้และรีสตาร์ท apache แก้ไขปัญหา


0

ในกรณีของฉันฉันมีcustom renderer classสำหรับDjango Rest Frameworkเพื่อจุดประสงค์บางอย่างฉันต้องแทนที่เมธอดของคลาส renderer "get_context" (การเปิดเผยแบบเต็ม: เพื่อdjango toolbarให้จำนวนคิวรี SQL ที่ถูกต้อง)

ฉันลบชั้นเรียนนั้นและปรับใช้ใหม่ มันทำงาน


0

ในกรณีของฉันเกิดข้อผิดพลาดเนื่องจาก pip-package ที่ต้องการหายไป

ดังนั้นฉันจึงทำการpip install -r requirements.txtรีสตาร์ท apache และสิ่งต่างๆก็ใช้ได้อีกครั้ง


0

การลบไดเร็กทอรี Virtualenv สร้าง Virtualenv ขึ้นใหม่จากนั้นติดตั้งข้อกำหนดทั้งหมดที่แก้ไขให้ฉัน


0

เพิ่มเหตุผลของฉันในรายการ สำหรับฉันมันเป็นเพราะฉันมีบริการ django ที่ตั้งชื่อด้วยไดเร็กทอรีเดียวกับไดเร็กทอรีกระบวนการ การเปลี่ยนชื่อกระบวนการ / dir แก้ไขปัญหา


0

ฉันมีการเรียกซ้ำdjango.setup()เช่นฉันพยายามเขียนdjango.setup()ภายใน an app/models.pyในการติดตามสแต็ก django พยายามชี้ให้เห็นสิ่งนี้ใกล้:

... "site-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
...
... ./myproject/myapp/models.py ...

ใช่อย่าพยายามตั้งค่า django ในขณะที่กำลังติดตั้ง django ...


0

การรีสตาร์ทเซิร์ฟเวอร์ Apache สำหรับฉันช่วยแก้ปัญหาได้ คุณสามารถทำได้โดยใช้คำสั่ง $ sudo service apache2 restart


0

ฉันมีปัญหาเดียวกันนี้สิ่งที่ได้ผลสำหรับฉันคือการแสดงความคิดเห็นเกี่ยวกับการตั้งค่าฐานข้อมูลเริ่มต้นใน / settings.py ฉันยังอ่านว่า django รุ่นที่ใหม่กว่าไม่สามารถทำงานร่วมกับ ebs ได้


0

สำหรับฉันข้อผิดพลาดคือmysqlclientแพ็คเกจที่ขาดหายไปในไฟล์ requirements.txt

ก่อนอื่นฉันติดตั้งmysqlclientแพ็คเกจด้วย:

pip install mysqlclient

จากนั้นฉันอัปเดตไฟล์ requirements.txt ด้วย:

pip freeze > requirements.txt

และสิ่งนี้ช่วยแก้ปัญหาของฉันได้


-1

ในกรณีของฉันฉันมีการนำเข้าแบบวงกลมซึ่งทำให้เกิดข้อผิดพลาดที่ทำลายวิธีการเติมข้อมูล


-1

ในการโยน 2 ยูโรเซ็นต์ของฉัน:

ฉันสร้างการตั้งค่าที่ใช้งานได้ใหม่ใน Docker การตั้งค่า Docker ใหม่ล้มเหลวด้วย

populate isn't reentrant

ซึ่งดูเหมือนจะเป็นข้อผิดพลาดทั่วไป ในกรณีของฉันฉันมองข้ามสิ่งนั้นไป

pip install Django

ติดตั้งเวอร์ชันล่าสุด ( 2.0) แทนเวอร์ชันที่1.11ต้องการ การเปลี่ยนสิ่งนี้เป็น

pip install Django==1.11

แก้ไขปัญหาของฉัน


-1

ฉันคิดว่านี่เป็นข้อผิดพลาดทั่วไปเมื่อมีสิ่งผิดปกติเกิดsettings.pyขึ้น บางครั้งฉันสามารถพบปัญหาได้จากการลองผิดลองถูกโดยการลบแอพที่ติดตั้งทีละแอพ ในบางกรณีไม่เกี่ยวข้องกับแอพที่ติดตั้ง แต่จากประสบการณ์ของฉันในทุกกรณีปัญหาภายในsettings.pyไฟล์


-1

ตรวจสอบว่าคุณได้กล่าวถึงชื่อ api ของคุณสองครั้งหรือไม่ในส่วนแอพที่ติดตั้งของ settings.py

ความหมายของโปรแกรมประยุกต์

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api',
    'myapp_api.apps.myappWebserviceApiConfig',    
]

ความหมายของโปรแกรมประยุกต์

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api.apps.myappWebserviceApiConfig',
]

การลบรายการที่ซ้ำกันช่วยแก้ปัญหาของฉันได้


แต่การกวดวิชากล่าวว่า INSTALLED_APPS = [ 'allauth', 'allauth.account', 'allauth.socialaccount']
หมิง

@ming เป็นทางเลือก
Swati Srivastava
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.