импорт модулей python / django завершается неудачно на Debian VPS - PullRequest
0 голосов
/ 23 ноября 2010

Debian VPS с Gigatux.используя django / python с mod_wsgi и я использую virtualenvs, так как я надеюсь разместить несколько разных сайтов, которые могут быть на разных уровнях.

У меня возникла проблема с запуском сайта, сейчас я не могу дажесделать syncdb, поскольку он отказывается импортировать пакет django, который находится внутри папки site-packages

У меня есть утверждение ниже в моем файле django.wsgi, который вызывается из строки конфигурации wsgi в apache2 / sites-available / default

import sys
sys.path.append('/home/shofty/virtualenvs/sitename/lib/python2.5/site-packages')

, и у меня есть довольно много пакетов в этой папке.

однако syncdb не будет работать.

теперь я установил django наVPS, не заставляя его в virtualenv, то я могу запустить syncdb.но происходит сбой syncdb при импорте модулей в установленных приложениях, которые находятся в пакетах сайта, но не установлены на vps.поэтому я знаю, что вышеприведенное утверждение не работает.

Я ценю, что может быть более специализированное место, чтобы задать этот вопрос, я просто не знаю его.скажи мне, что это, если ты знаешь где-нибудь, где на это ответят.У меня есть два дня, чтобы запустить этот VPS и, честно говоря, я готов сдаться.

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Смешение сред не поможет.

Очевидно, что некоторые пакеты установлены в комплекте Python, а другие - в virtualenv.

Мое предложение, придерживайтесь virtualenv

И работа над virtualenv всегда выполняется source /path/to/venv/bin/activate

В файле wsgi включить virtualenv .Вы делаете это не путем импорта его site_packages, а путем запроса mod_wsgi использовать , что python.Вы делаете это с помощью следующей команды:

activate_this = '/path/to/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
0 голосов
/ 23 ноября 2010

Я работал над тем, чтобы debian, apache, django, mod_wsgi и virtualenvs хорошо играли пару недель назад. Глядя на шаблон, который я сделал для наших файлов wsgi, я использую и site.addsitedir, и sys.path.append, где site.addsitedir указывает на site_package, а sys.path.append указывает на копию. приложения на хосте. Вот как выглядит первая часть шаблона jinja2 для django.wsgi

import sys
import os
import site

site.addsitedir('{{ site_package }}')
sys.path.append('{{ local_source }}')
...

local_source - это что-то вроде / home / jdoe / my_project, а site_package - что-то вроде /usr/local/lib/python2.6/site-packages.

Я помню, что мне пришлось немного поиграть с этим, и я также помню проблему с тем, что django.wsgi и settings.py должны находиться в одном каталоге. Я надеюсь, что это помогает.

...