为什么给PYTHONPATH一个不同的值?从cgi(apache)到本地

为什么给PYTHONPATH一个不同的值?从cgi(apache)到本地,python,apache,cgi,pythonpath,Python,Apache,Cgi,Pythonpath,我正在研究如何通过设置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)中添加了一些额外的路径,但是当在apache(

我正在研究如何通过设置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)中添加了一些额外的路径,但是当在apache(浏览器)中以cgi文件的形式执行上述代码时,它不会显示我添加的路径…(实际上,它不会从丢失的路径加载模块) 当我在本地用python执行代码时,所有路径都会显示出来(这样就可以了)

#!C:\tools\programming\Python27\python.exe
导入cgi
进口cgitb
cgib.enable()
打印“内容类型:文本/html”
打印
导入系统
#导入时间操作
对于sys.path中的路径:
打印路径+“
” 打印“python版本:”+sys.version 打印“” 打印“矿脉不长!” 打印“”
我重新启动了电脑,没有成功。也只安装了一个python版本

为什么给PYTHONPATH一个不同的值?我不知道。 感谢您的帮助


矿脉

环境变量特定于用户。我怀疑Apache是否与您以相同的用户身份运行。您需要通过服务控制台专门为Apache用户添加它们。

出于这个原因,我个人不喜欢通过环境变量向PYTHONPATH添加内容。我怀疑原因是PYTHONPATH环境变量的作用域与Apache使用的不同。例如,您的变量可能是用户的本地变量,而Apache只使用系统环境变量运行

我发现通过在站点包目录中添加一个“.pth”文件来完全绕过环境变量更可靠。从python解释器执行以下代码:

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()
这将打印“站点包”目录的位置。访问该目录(从命令行或Windows资源管理器)并在其中创建一个名为“MyPythonPath.pth”的文件(或其他扩展名为“.pth”的文件)。在其中,在单独的行中包含要添加到PYTHONPATH的每个值:

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

下次运行Python时,这些文件夹将添加到您的路径中,无论您在何处运行,只要您始终使用相同的Python解释器。

这很好!我从一开始就不喜欢蟒蛇,这是一个很好的选择!当找不到模块时,我将此解决方案放入错误捕获中:)非常感谢。现在我明白了。谢谢你的解释。(但我实施了我的解决方案)
C:\Path\to\first\directory
C:\Path\to\second\directory