0

我正在寻找如何通过设置 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
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 一个不同的值?我不知道。任何帮助表示赞赏!

矿脉

4

2 回答 2

1

出于这个原因,我个人不喜欢通过环境变量向 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 解释器。

于 2012-02-09T14:41:30.087 回答
0

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

于 2012-02-09T14:41:16.260 回答