如何获取python操作系统环境cgi脚本中的参数?

2024-09-30 16:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用

os.environ.keys()

在命令行中,我得到的环境变量与在cgi脚本中不同。有没有办法通过cgi脚本获取python环境变量?在

使用

^{pr2}$

我得到的参数不一样。在

你能帮帮我吗?在

编辑时间:

例如,我的环境参数在命令行中

['rvm_version', 'rvm_path', 'LESSOPEN', 'escape_flag', 'SSH_CLIENT', 
'LOGNAME', 'USER', 'HOME', 'PATH', 'RDBASE', 'LD_LIBRARY_PATH', 'LANG',           
'TERM', 'SHELL', '_first', 'SHLVL', '__array_start', 'G_BROKEN_FILENAMES', 
'HISTSIZE', 'LISISTOOLS_PATH', 'GEM_PATH', 'rvm_bin_path', 'rvm_prefix', 
'PYTHONPATH', 'IRBRC', 'AUTODOCK_PATH', 'MY_RUBY_HOME', 'BOOST', '_', 
 '_second', 'SSH_CONNECTION', 'RUBY_VERSION', 'GRANATUM_LICENSE_FILE',      
 'OLDPWD', 'HOSTNAME', 'HISTCONTROL', 'PWD', 'SSH_TTY', 'MAIL', 'LS_COLORS', 
 'GEM_HOME', 'MGLTOOLS']

但根据我的cgi脚本:

['HTTP_COOKIE', 'SERVER_SOFTWARE', 'SCRIPT_NAME', 'SERVER_SIGNATURE', 
'REQUEST_METHOD', 'SERVER_PROTOCOL', 'QUERY_STRING', 'PATH', 'DUMP_FILE', 
'HTTP_ACCEPT_CHARSET', 'HTTP_USER_AGENT', 'HTTP_CONNECTION', 'HTTP_REFERER', 
'SERVER_NAME', 'REMOTE_ADDR', 'SERVER_PORT', 'SERVER_ADDR', 'DOCUMENT_ROOT', 
'SCRIPT_FILENAME', 'SERVER_ADMIN', 'HTTP_HOST', 'REQUEST_URI', 'HTTP_ACCEPT',         
'GATEWAY_INTERFACE', 'REMOTE_PORT', 'HTTP_ACCEPT_LANGUAGE',     
'HTTP_ACCEPT_ENCODING']

我想要第一组环境变量(命令行)通过cgi脚本。在

当我在cgi脚本中导入时

from rdkit import Chem

我知道错误了

 /home/galaxy/working/RDKit/rdkit/Chem/__init__.py in ()
16  
17 """
18 from rdkit import rdBase
<type 'exceptions.ImportError'>: libRDGeneral.so.1: cannot open shared object 
file: No such file or directory 
  args = ('libRDGeneral.so.1: cannot open shared object file: No such file or 
         directory',) 
  message = 'libRDGeneral.so.1: cannot open shared object file: No such file 
         or directory'

但在命令行中我没有出错。在

Python路径包含

'/home/galaxy/working:/home/galaxy/working/RDKit:/home/galaxy/working/mgltools_x86_64Linux2_1.5.4/mgltoolspgs:/home/galaxy/working/mgltools_x86_64Linux2_1.5.4/mgltoolspkgs'

我更新系统路径使用

 sys.path.append('/home/galaxy/working')
 sys.path.append('/home/galaxy/working/RDKit')
 sys.path.append('/home/galaxy/working/mgltools_x86_64Linux2_1.5.4/
 MGLToolsPckgs')
 sys.path.append('/home/galaxy/working/mgltools_x86_64Linux2_1.5.4/      
 MGLToolsPckgs')

Tags: path命令行脚本httphomeservergalaxyx86
2条回答

我想你能做到

subprocess.Popen([cmd],env={'my':'environment','vars':4, ...})

强制一组特定的环境变量

您误解了这种情况:os.environ只提供了操作系统提供的进程环境的值。您的CGI脚本在Apache下运行,因此当您从命令行运行它时,它的环境与同一脚本不同。(例如,USER必然不同)。在

简言之,你所要求的并不存在。您得到的python环境变量并不是您所期望的。请解释您试图实现的目标,即,为什么您要获得这些环境价值。我可以告诉你如何设置你的CGI脚本,使其环境与你的命令行环境相匹配,但谁知道你是否需要这样做呢?在

编辑:所以您的目标是导入一个模块。您可以通过向sys.path(一个列表)追加目录来动态更改模块导入路径。尝试显式地添加rdkit的位置。你不需要环境。在

相关问题 更多 >