2012-02-19 17 views
7

Tôi đang cố gắng để có được pinax làm việc trên WebFaction và có rất nhiều vấn đề ...Không thể nhập các thiết lập 'myproject.settings' (Is nó trên sys.path?): Không có mô-đun tên pinax

[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] mod_wsgi (pid=22796): Exception occurred processing WSGI script '/home/pawesome/webapps/qtsocial/myproject.wsgi'. 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/wsgi.py", line 250, in __call__ 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  self.load_middleware() 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/base.py", line 39, in load_middleware 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  for middleware_path in settings.MIDDLEWARE_CLASSES: 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/utils/functional.py", line 276, in __getattr__ 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  self._setup() 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/conf/__init__.py", line 42, in _setup 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  self._wrapped = Settings(settings_module) 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/conf/__init__.py", line 89, in __init__ 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1]  raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
[Sun Feb 19 20:01:20 2012] [error] [client 127.0.0.1] ImportError: Could not import settings 'myproject.settings' (Is it on sys.path?): No module named pinax 

The wsgi:

import os 
import sys 

from django.core.handlers.wsgi import WSGIHandler 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
application = WSGIHandler() 

Wsgi nằm trong cùng thư mục với myproject và settings.py chắc chắn là trong dự án của tôi. Vì vậy, những gì cho?

EDIT:

Được rồi vì vậy tôi đã lấy lời khuyên từ đây cũng như từ webfaction và wsgi bây giờ trông như thế này ...

import os 
import sys 
from site import addsitedir 
from django.core.handlers.wsgi import WSGIHandler 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
sys.path.append('/home/pawesome/webapps/qtsocial/myproject') 
sys.path.append('/home/pawesome/webapps/qtsocial') 

addsitedir('/home/pawesome/envs/pinax072/lib/python2.6/site-packages') 
application = WSGIHandler() 

Tôi nghĩ rằng điều này đã giải quyết một cái gì đó nhưng không phải tất cả mọi thứ. .. bây giờ tôi nhận được ...

[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] mod_wsgi (pid=15572): Exception occurred processing WSGI script '/home/pawesome/webapps/qtsocial/myproject.wsgi'. 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/wsgi.py", line 250, in __call__ 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]  self.load_middleware() 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] File "/home/pawesome/webapps/qtsocial/lib/python2.6/django/core/handlers/base.py", line 47, in load_middleware 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1]  raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)) 
[Sun Feb 19 20:00:28 2012] [error] [client 127.0.0.1] ImproperlyConfigured: Error importing middleware django_openid.consumer: "No module named voting_extras" 

Cảm ơn một lần nữa chàng trai ... Những người dân ở WebFaction thời gian gần đây đã từ bỏ và nói với tôi đến đây mặc dù tôi đã có lol

Trả lời

2

Có 2 vấn đề,

  1. Các virtualenv nên được nạp trong ~/apache2/bin/bắt đầu với những dòng này,

    WORKON_HOME=/home/pawesome/envs/pinax072/ . $WORKON_HOME/bin/activate

  2. Bạn nên sử dụng tệp wsgi được cung cấp bởi pinax chứ không phải trình cài đặt của chúng tôi cung cấp dưới dạng pinax có một số mã đường dẫn tùy chỉnh cần thiết,

    #WSGIScriptAlias//home/pawesome/webapps/qtsocial/myproject.wsgi WSGIScriptAlias//home/pawesome/webapps/qtsocial/myproject/deploy/pinax.wsgi

9

Bạn đã cố gắng thêm thư mục đó vào PYTHONPATH của bạn một cách rõ ràng chưa? Ngoài ra, bạn có thể cần phải thêm cả hai thư mục dự án và thư mục gốc. Thêm các dòng này vào tệp wsgi của bạn, sử dụng đường dẫn dự án của bạn:

sys.path.append('/explicit/path/to/myproject') 
sys.path.append('/explicit/path/to') 

P.S. làm điều đó trước dòng application = WSGIHandler().

Cập nhật: lỗi mới dường như có cùng nguyên nhân, theo this. Vui lòng kiểm tra kỹ vị trí của ứng dụng "voting_extras" và liệu thư mục mẹ của nó có xuất hiện trong PYTHONPATH hay không.

+0

Được rồi vì vậy tôi đã lấy lời khuyên từ đây cũng như từ webfaction và wsgi bây giờ trông như thế này ... import os nhập khẩu sys từ trang web nhập khẩu addsitedir từ django.core.handlers.wsgi nhập khẩu WSGIHandler os.environ ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' sys.path.append ('/ home/pawesome/webapps/qtsocial/myproject') sys.path.append ('/ home/pawesome/webapps/qtsocial ') additionalitedir ('/home/pawesome/envs/pinax072/lib/python2.6/site-packages ') application = WSGIHandler() – milktrey

+0

@milktrey cập nhật câu trả lời dựa trên một số thông tin từ webfaction, tôi hy vọng nó sẽ giúp ... – mgibsonbr

8

Tôi nghĩ bạn cần thêm nội dung của mình vào PYTHONPATH. Tôi thêm dự án của tôi và đó là virtualenv. Đây là một mẫu của những gì wsgi của bạn có thể trông giống như mỗi dự án.

import sys 
import site 
import os 

envpath = '/development/myproject/env/lib/python2.7/site-packages' 

# we add currently directory to path and change to it 
pwd = os.path.dirname(os.path.abspath(__file__)) 
os.chdir(pwd) 
sys.path = [pwd] + sys.path 

# Append paths 
site.addsitedir(envpath) 

# now start django 
from django.core.handlers.wsgi import WSGIHandler 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
application = WSGIHandler() 
0

Theo https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/#using-a-virtualenv này chỉ cần thêm đường dẫn đến gói của bạn trang web và trăn site-packages thư mục trong config Apache hoặc cấu hình trang web của bạn (bên ngoài chỉ thị VirtualHost)

WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python2.X/site-packages

Đối với tôi, đó là:

WSGIPythonPath /var/www/djtest:/usr/local/lib/python2.7/site-packages

14

Trong terminal của bạn, cd vào thư mục có chứa settings.py, sau đó chạy

python settings.py 

Bạn có thể nhận được một lỗi nhập được dễ dàng cố định (vui lòng nhập lỗi, hoặc lỗi cú pháp).

-1

với Pycharm. Tôi đã đóng "Thêm nội dung gốc vào PYTHONATH" và "Thêm nguồn gốc vào PYTHONATH". Nó hoạt động.

0

Tôi đã gặp phải sự cố tương tự. Trong trường hợp của tôi, tôi có một thư mục cấu hình cấp cao nhất, trong đó tập tin chung settings.py được đặt. Trong thư mục myproject Tôi có cài đặt thứ hai nơi tôi cố gắng nhập config.settings tệp.

Trong trường hợp của tôi vấn đề là trăn đang tìm kiếm trong myproject.config thư mục thay vì cấp cao nhất cấu hình.

# project structure 
    config/ 
     settings.py 
     constans.py 
    myproject/ 
     config/ 
      constants.py 
     settings.py 
     manage.py 
     urls.py 

err: ImportError: Could not import settings 'myproject.settings' (Is it on sys.path?): No module named settings

Giải pháp: Tôi đã gỡ bỏ/chuyển myproject/thư mục cấu hình.