Почему PYTHONPATH имеет другое значение? из cgi (apache) не похож на локальный - PullRequest
0 голосов
/ 09 февраля 2012

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

import sys
print "modules will be searched in the following paths:"
for path in sys.path:
    print path
print "python version: " + sys.version

Я добавил несколько дополнительных путей в переменную среды PYTHONPATH (windows gui), но при выполнении приведенного выше кода в виде cgi-файла в apache (в браузере) он не показывает мои добавленные пути ... (и действительно, это не будет загружать модули с отсутствующих путей) Когда я выполняю код с python локально, отображаются все пути (так что все в порядке).

#!C:\tools\programming\Python27\python.exe
import cgi
import cgitb
cgitb.enable()
print "Content-type: text/html" 
print
import sys

#import timeOperations

for path in sys.path:
    print path + "<br>"

print "python version: " + sys.version
print "<html>"
print "<center>Lode doet het weer!</center>"
print "</html>"

Я сделал перезагрузку компьютера, но безуспешно. Также установлена ​​только одна версия Python.

Почему PYTHONPATH имеет другое значение? Я не знаю. Любая помощь приветствуется!

Lode

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Мне лично не нравится добавлять вещи в PYTHONPATH через переменную окружения по этой самой причине.Я подозреваю, что причина в том, что ваша переменная окружения PYTHONPATH имеет область действия, отличную от той, что использует Apache.Например, ваша переменная может быть локальной для вашего пользователя, в то время как Apache работает только с системными переменными среды.

Я считаю более надежным полностью обойти переменные среды, добавив файл ".pth" к вашему сайту.каталог пакетов.Выполните следующий код из интерпретатора Python:

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()

Это распечатает местоположение вашего каталога "site-packages".Посетите этот каталог (из командной строки или проводника Windows) и создайте в нем файл с именем «MyPythonPath.pth» (или что-то еще с расширением «.pth»).В него включайте каждое значение, которое вы хотите добавить в PYTHONPATH, в отдельных строках:

C:\Path\to\first\directory
C:\Path\to\second\directory

При следующем запуске Python эти папки будут добавлены в ваш путь, независимо от того, где вы его запускаете - до тех портак как вы всегда используете один и тот же интерпретатор Python.

0 голосов
/ 09 февраля 2012

Переменные среды специфичны для пользователя.Я сомневаюсь, что Apache работает под тем же пользователем, что и вы.Вам нужно будет добавить их специально для пользователя Apache через консоль служб.

...