2012-10-20 31 views
32

Tôi đang cố gắng phát triển dự án mẫu ở Django và gặp lỗi khi chạy lệnh syncdb.ImportError: Không thể nhập cài đặt

Đây là cách cấu trúc dự án của tôi trông giống như:

/Users/django_demo/godjango/Đăng ký tour:

manage.py 
    registration/ 
     forms.py 
     views.py 
     models.py 
     urls.py 
    bookings/ 
     settings.py 
     urls.py 

Và tập tin manage.py của tôi là như sau:

#!/usr/bin/env python 
import os 
import sys 

if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings") 
    from django.core.management import execute_from_command_line 
    execute_from_command_line(sys.argv) 

Và PYTHONPATH và DJANGO_SETTINGS_MODULE của tôi được đặt dưới đây

$echo $DJANGO_SETTINGS_MODULE 
bookings.settings 

$ echo $PYTHONPATH 
/Users/django_demo/godjango/bookings 

Và tập tin WSGI.py của tôi trông giống như dưới đây:

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings") 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

Khi tôi chạy lệnh python manage.py syncdb, tôi nhận được lỗi sau.

Traceback (most recent call last): 
    File "manage.py", line 11, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line 
    utility.execute() 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class 
    module = import_module('%s.management.commands.%s' % (app_name, name)) 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module> 
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/core/management/sql.py", line 6, in <module> 
    from django.db import models 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/db/__init__.py", line 11, in <module> 
    if DEFAULT_DB_ALIAS not in settings.DATABASES: 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner 
    self._setup() 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/conf/__init__.py", line 42, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/Users/django_demo/godjango/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'bookings.settings' (Is it on sys.path?): No module named unipath 

Ai đó có thể đề xuất những gì tôi bị thiếu?

Trả lời

31

Lỗi nói ImportError: Could not import settings 'bookings.settings' (Is it on sys.path?): No module named unipath

Vì vậy, là con đường của bạn /Users/django_demo/godjango/bookings trong python-sys.path?

Kiểm tra nó trong vỏ của bạn với:

$ python 
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> for path in sys.path: print path 
... 

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/suds-0.4-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL-1.1.7-py2.7-macosx-10.6-intel.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/spyne-2.8.2_rc-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml-3.0alpha2-py2.7-macosx-10.6-intel.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pytz-2012d-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_debug_toolbar-0.9.4-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_social_auth-0.7.7-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/python_openid-2.2.5-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/oauth2-1.5.211-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Django-1.4.1-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/httplib2-0.7.6-py2.7.egg 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 
/Library/Python/2.7/site-packages 
>>> 

Nếu không - bạn cần phải thêm nó hoặc đơn giản là di chuyển ứng dụng bookings của bạn thành một trong những con đường đại diện trong sys.path

+4

Làm thế nào tôi có thể "di chuyển" ứng dụng của tôi thành một trong những con đường? – Timo

+2

@Timo: nếu bạn sử dụng virtualenv, bạn có thể sử dụng lệnh 'add2virtualenv' – jnns

+0

xin vui lòng, bất kỳ ai có thể giúp tôi vấn đề này. Tôi cũng phải đối mặt như lỗi này. http://stackoverflow.com/questions/33890277/deploy-django-on-apache?noredirect=1#comment55585809_33890277 vẫn không thể giải quyết được. – uma

11

Các bạn phần đáng kể của traceback ở đây là đúng vào cuối cùng. Nó nói "No module named unipath". Bạn đã gọi nó ở đâu đó trong mã của bạn, nhưng bạn dường như không có nó trong dự án của bạn - nó không phải là một phần của thư viện chuẩn, vì vậy bạn sẽ cần phải cài đặt nó ở đâu đó mà Python có thể nhìn thấy nó.

14

Sửa đổi tập tin của bạn từ wsgi.py

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings") 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

để

import os, sys  
sys.path.append(' /Users/Sreek/django_demo/godjango/bookings') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bookings.settings") 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
+0

Đây là vấn đề của tôi. – Greg

1

Xem lại tập tin giờ /etc/apache2/httpd.conf; bạn phải bao gồm chỉ thị WSGIPythonPath, để chỉ ra thư mục chứa dự án Django của bạn (quản lý.tập tin py), như:

WSGIPythonPath/home/user/Dự án/Django/MyProject

cũng

nếu bạn sử dụng một số cổng lạ trong VirtualHost của bạn, xác định nếu để nghe:

Nghe 90

Hope this helps ai đó

+0

Nếu nó ở trong PYTHONPATH, thì tôi không nghĩ điều này là cần thiết, phải không? – User

1

ImportError: Could not import settings 'settings' (Is it on sys.path? Is there an import error in the settings file?): No module named setting

Trong trường hợp của tôi, tôi đã sử dụng để __init__.py nhập các tệp khác và đã xảy ra lỗi trong đó, vì vậy, cài đặt có thể tồn tại nhưng thiếu sót.

4

Ngoài ra, bạn thậm chí có thể vượt qua con đường thiết lập tại thời gian chạy như vậy:

python manage.py syncdb --settings=bookings.settings --pythonpath=/Users/django_demo/godjango/bookings 

này nên ghi đè lên các biến môi trường (DJANGO_SETTINGS_MODULE)

+0

Aww yeah buddy! Bạn đã tiết kiệm cho tôi pow (2, 64) giờ! Cảm ơn bạn ! – dctremblay

Các vấn đề liên quan