Загрузить модуль в apache + mod-wsgi - PullRequest
5 голосов
/ 12 ноября 2010

Я использую Apache + mod-wsgi.

В моем httpd.conf у меня есть следующие дополнительные строки в конце файла.

LoadModule wsgi_module modules/mod_wsgi-win32-ap22py27-3.3.so
WSGIScriptAlias / "C:/Projects/Folder/web/"
<Directory "C:/Projects/Folder/web">
AllowOverride None
Options None
Order deny,allow
Allow from all
</Directory>

Когда я выполняюследующие index.py сценарии в Windows через http://localhost/script/index.py

def application(environ, start_response):
    status = '200 OK' 
    output = 'Hello World!'
    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

Работает довольно хорошо.

Однако, когда я добавляю import utils в первой строке index.py, я получаю

ImportError: No module named utils

utils.py - это тот же каталог, что и index.py

Есть ли какая-либо дополнительная конфигурация, которую мне нужно установить?

Я пытаюсь предложить предложение, данное @ dan_waterworth

import sys, os
sys.path.append(os.path.dirname(__file__))

Я больше не получаю ошибку, импортируя свой собственный модуль.Однако, когда я импортирую модуль, который устанавливается через easy_install, возникает ошибка.

   File "C:/Projects/Folder/web/script\\connection.py", line 1, in <module>
     import psycopg2
   File "build\\bdist.win32\\egg\\psycopg2\\__init__.py", line 65, in <module>
     from psycopg2 import tz
 ImportError: cannot import name tz

import psycopg2 не выполняется, если этот скрипт выполняется как отдельное приложение.

Ответы [ 3 ]

6 голосов
/ 12 ноября 2010

Я считаю, что мне нужно добавить несколько строк, чтобы добавить путь к Python. Что-то вроде:

import sys, os
sys.path.append(os.path.dirname(__file__))

import utils

для второй части, просто добавьте дополнительные строки для ваших каталогов импорта. то есть:

sys.path.append([enter path here])

, чтобы найти каталоги для импорта, введите в интерактивном окне Python:

import sys
print sys.path
1 голос
/ 16 июля 2013

Другие ответы направлены на то, чтобы заставить сам скрипт искажать свою собственную PYTHONPATH. Другой подход заключается в том, чтобы определить правильные настройки Apache, которые установят работоспособный путь для приложений Python и WSGI.

У меня есть это в моем файле конфигурации:

PassEnv PYTHONPATH
WSGIPythonHome  C:/Python/Python26
WSGIPythonPath  C:/Python/Python26;C:/myproject/PyLib

Если вы не хотите передавать PYTHONPATH своего окружения, я думаю, вы можете использовать:

SetEnv PYTHONPATH C:/your/paths/go/here;C:/and/here

Я предлагаю вам попробовать.

0 голосов
/ 12 ноября 2010

sys.path и sys.modules, чтобы проверить, действительно ли каталог добавлен как каталог модуля.Если нет sys.path.append это.

...