2012-02-09 3 views
0

pythonpath를 설정하여 모듈을 가져 오는 방법을 모색 중입니다. (브라우저에서) 아파치에서 CGI 파일로 위의 코드를 실행할 때, 그것을 내가 PYTHONPATH 환경 변수 (윈도우 GUI)의 몇 가지 여분의 경로를 추가왜 PYTHONPATH에 다른 값을 부여합니까? cgi (apache)와 비슷하지 않습니다.

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

하지만 : 경로 파이썬을 확인하려면 는보고있다 내 추가 경로를 표시하지 않습니다 ... (실제로, 누락 된 경로에서 모듈을로드하지 않습니다) 파이썬으로 코드를 로컬로 실행하면 모든 경로가 표시되므로 (확인).

#!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>" 

나는 컴퓨터를 재부팅했지만 성공하지 못했습니다. 파이썬 버전도 하나만 설치되어 있습니다.

왜 PYTHONPATH에 다른 값을 부여합니까? 나는 모른다. 도움을 주시면 감사하겠습니다.

lode

답변

1

개인적으로 환경 변수를 통해 PYTHONPATH에 항목을 추가하는 것이 좋지 않습니다. 그 이유는 PYTHONPATH 환경 변수가 Apache가 사용하는 것과 다른 범위를 가지고 있기 때문입니다. 예를 들어, 변수는 사용자에게 로컬 일 수 있지만 Apache는 시스템 환경 변수만으로 실행됩니다.

site-packages 디렉토리에 ".pth"파일을 추가하여 환경 변수를 완전히 우회하는 것이 더 안정적이라는 것을 알았습니다. 파이썬 인터프리터에서 다음 코드를 실행하십시오.

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 

다음에 당신이 파이썬을 실행을이 폴더 경로에 추가됩니다 상관없이 당신은 당신대로만큼 그것을 실행없는 경우 항상 동일한 파이썬 인터프리터를 사용합니다.

+0

이것은 훌륭합니다! 나는 처음부터 pythonpath를 좋아하지 않았다. 그리고 이것은 훌륭한 대안이다! 나는 모듈을 찾을 수 없을 때 잡기에이 해결책을 넣었다. :) 대단히 감사합니다. – lode

0

환경 변수는 사용자에 따라 다릅니다. 나는 아파치가 당신과 같은 사용자로 운영되고 있는지 의심 스럽다. 서비스 콘솔을 통해 Apache 사용자를 위해 특별히 추가해야합니다.

+0

안녕하세요. 설명 주셔서 감사합니다. (하지만 mlefavors 솔루션을 구현합니다) – lode

관련 문제