2012-02-19 3 views
7

Je suis en train de se pinax travailler sur WebFaction et ayant tant de questions ...Impossible d'importer les paramètres de les myproject.settings '(est-ce sur sys.path?): Aucun module nommé 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 

le wsgi:

import os 
import sys 

from django.core.handlers.wsgi import WSGIHandler 

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

le wsgi est dans le même dossier que myproject et settings.py est sans aucun doute dans myproject. Alors qu'est-ce qui donne?

EDIT:

Bon alors je pris les conseils d'ici, ainsi que de webfaction et wsgi ressemble maintenant à ceci ...

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() 

Je pense que cela a résolu quelque chose, mais pas tout. .. maintenant je reçois ...

[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" 

Merci encore les gars ... Les gens WebFaction ont récemment et m'a dit de venir ici, même si j'avais déjà lol

Répondre

2

Il y avait 2 problèmes,

  1. Le virtualenv doit être chargé dans ~/apache2/bin/commencer par ces lignes,

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

  2. Vous devriez utiliser le fichier wsgi fourni par pinax et non celui fourni par notre installateur car pinax a un code de chemin personnalisé qui est nécessaire,

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

9

Avez-vous essayé d'ajouter explicitement ce dossier à votre PYTHONPATH? En outre, vous devrez peut-être ajouter tous les deux le dossier du projet et le parent. Ajoutez ces lignes à votre fichier wsgi, en utilisant le chemin de votre projet:

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

P.S. faites cela avant la ligne application = WSGIHandler().

Mise à jour: la nouvelle erreur semble avoir la même cause, selon this. Veuillez vérifier où se trouve votre application "voting_extras" et si son dossier parent est présent dans le PYTHONPATH.

+0

Ok j'ai pris les conseils d'ici ainsi que de webfaction et wsgi ressemble maintenant à ceci ... importation os import sys à partir du site importation addsitedir de WSGIHandler import django.core.handlers.wsgi os.environ ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' sys.path.append ('/ home/pawesome/webapps/qtsocial/monprojet') sys.path.append ('/ home/pawesome/webapps/qtsocial ') ajouté ('/home/pawesome/envs/pinax072/lib/python2.6/site-packages ') application = WSGIHandler() – milktrey

+0

@milktrey mis à jour la réponse basée sur quelques informations de webfaction, j'espère que cela aide ... – mgibsonbr

8

Je pense que vous devez ajouter vos trucs au PYTHONPATH. J'ajoute mon projet et c'est virtualenv. Voici un exemple de ce à quoi votre wsgi pourrait ressembler par projet.

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

Selon cette https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/#using-a-virtualenv ajouter juste chemin à votre forfait du site et le répertoire site-packages python dans la configuration Apache ou votre configuration du site (hors VirtualHost)

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

Pour moi, c'était:

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

14

Dans votre terminal, cd dans le répertoire qui contient settings.py, puis exécutez

python settings.py 

Vous pouvez obtenir une erreur d'importation qui est facilement corrigé (faute de frappe ou erreur de syntaxe).

-1

avec Pycharm. J'ai fermé "Ajouter des racines de contenu à PYTHONATH" et "Ajouter des racines sources à PYTHONATH". Ça marche.

0

J'ai rencontré un problème similaire. Dans mon cas, j'avais un dossier de configuration de niveau supérieur, où le fichier settings.py a été localisé. Dans myproject dossier J'ai eu un deuxième paramètres où j'essaie d'importer le fichier config.settings.

Dans mon cas, le problème était que python était à la recherche dans myproject.config dossier au lieu de config haut niveau.

# 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

Solution: J'ai enlevé/déplacé le dossier myproject/config.

Questions connexes