【问题标题】:APPDATA is not returned in Python executed via CGI通过 CGI 执行的 Python 中不返回 APPDATA
【发布时间】:2012-06-27 04:16:30
【问题描述】:

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

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

发生了什么事?我该如何解决这个问题?我是 Python 新手,我刚刚学习它。

【问题讨论】:

    标签: python apache cgi nltk appdata


    【解决方案1】:

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

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

    SetEnv APPDATA 1.2.3.4.5
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        模块在运行前检查这个:

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

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

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

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

        就我而言,我使用 python 2.7,并将所有包存储在站点包中,因此所有用户都可以访问它们。所以我真的不需要给我的用户 appdata 文件夹。

        【讨论】:

          猜你喜欢
          • 2023-03-26
          • 1970-01-01
          • 2012-02-16
          • 2020-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多