python - 在内部服务器上设置 Django(os.environ() 没有按预期工作?)

标签 python django apache

我正在尝试在公司内部服务器上安装 Django。 (没有外部互联网连接。)

查看服务器设置文档,“Running Django on a shared-hosting provider with Apache”方法似乎最有可能在这种情况下起作用。

服务器信息如下:

  • 无法安装 mod_python
  • 没有root权限
  • 服务器是SunOs 5.6
  • python 2.5
  • Apache /2.0.46
  • 我已经使用 -- flup 安装了 Django(和 prefix option) (再次阅读我可能应该使用 --home,但目前它似乎并不重要)

我已将 .htaccess 文件和 mysite.fcgi 文件添加到我的根 Web 目录中,如前所述 here . 当我从服务器运行 mysite.fcgi 脚本时,我得到了预期的输出(正确的站点 HTML 输出)。但是,当尝试从浏览器访问它时它不会。

这似乎是 PYTHONPATH 设置的问题,因为我使用的是前缀选项。

我注意到,如果我从命令行运行 mysite.fcgi 而没有设置 PYTHONPATH 环境变量,它会抛出以下错误:

prompt$ python2.5 mysite.fcgi 
 ERROR:
 No module named flup   Unable to load
 the flup package.  In order to run
 django   as a FastCGI application, you
 will need to get flup from  
 http://www.saddi.com/software/flup/  
 If you've already   installed flup,
 then make sure you have it in your
 PYTHONPATH.

我已将 sys.path.append(prefixpath)os.environ['PYTHONPATH'] = prefixpath 添加到 mysite.fcgi,但如果我在命令行上将环境变量设置为空,然后运行 ​​mysite.fcgi,我仍然会收到上述错误。

以下是一些命令行结果:

>>> os.environ['PYTHONPATH'] = 'Null'
>>>
>>> os.system('echo $PYTHONPATH')
Null
>>> os.environ['PYTHONPATH'] = '/prefix/path'
>>>
>>> os.system('echo $PYTHONPATH')
/prefix/path
>>> exit()
prompt$ echo $PYTHONPATH
Null

看起来 Python 正在设置变量 OK,但该变量仅适用于脚本内部。 Flup 似乎作为 .egg 文件分发,我的猜测是 egg 实现至少没有考虑 os.environ['key'] = value (?) 添加的变量通过 --prefix 选项安装时。

我对 .pth 文件不太熟悉,但似乎 easy-install.pth 文件是指向 flup 的文件:

import sys; sys.__plen = len(sys.path)
./setuptools-0.6c6-py2.5.egg
./flup-1.0.1-py2.5.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sy
s.path[p:p]=new; sys.__egginsert = p+len(new)

看起来它正在做一些时髦的事情,无论如何要编辑它或向我的代码中添加一些东西以便它会发现错误?

最佳答案

在您的设置中,您必须指向实际的 egg 文件,而不是 egg 文件所在的目录。它应该看起来像:

sys.path.append('/path/to/flup/egg/flup-1.0.1-py2.5.egg')

关于python - 在内部服务器上设置 Django(os.environ() 没有按预期工作?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531224/

相关文章:

apache - 使用 .htaccess 更改文件名

python - 列表串联,将以 ':' 结尾的元素添加到列表中,将其他元素添加到子列表中

python - 扭曲的 ssh -X 选项(x11 转发)

python - 如何使用 Pandas 在excel输出文件中合并具有相同内容的多个列

apache - Jmeter中的SetProperty和属性

Apache2 .htaccess 重定向到 https 不起作用

python - Django信号如何对多个发送者和多个实例执行post_save方法?

python - Django 查询对 ArrayFields 的长度求和

python - 具有已存在表的 Django ManyToMany 字段

python - Django 绝对导入