1

我通过 CGI 在 Apache 中使用 Python 和 NLTK 工具包。该工具包需要知道 APPDATA 目录,但是在服务器中执行时,os.environ不会列出APPDATA.

print os.envrion当我在控制台中执行简单时,APPDATA它存在,但在 Web 服务器中通过 CGI 执行时不存在。

到底是怎么回事?我该如何解决这个问题?我是 Python 新手,我刚刚学习它。

4

3 回答 3

1

是很有可能的。CGI 环境与控制台中的环境不同。

您可以从 Apache (from apache.conf) 设置变量:

SetEnv APPDATA 1.2.3.4.5
于 2012-06-27T04:23:51.253 回答
1

%APPDATA%是展开到展开变量的用户(即运行脚本的人)的“应用程序数据”目录的特殊变量。Apache 没有像你一样运行,所以它不知道你的APPDATA 目录。

您应该将相关路径硬编码到脚本中,或者将其替换为相对于脚本位置的路径,例如r'..\data\nltk_data'. 如果您确实需要,您可以通过查看__file__.

于 2012-06-28T14:25:15.867 回答
1

模块在运行前检查:

if sys.platform == 'win32' and 'APPDATA' in os.environ

但是 APPDATA 在 Apache 中不存在,因为它以与您不同的另一个用户身份运行。

所以你必须手动分配你的APPDATA

import os
os.environ.__setitem__('APPDATA','C:\Python27\Lib\site-packages')

For my case, i use python 2.7, and I store all the packages in site-packages, so they are accessible for all users. so i don't really need to give my user appdata folder.

于 2015-03-30T22:28:54.050 回答