当我从网上运行CGI脚本时,为什么python不能找到一些模块?

问题描述 投票:6回答:3

我不知道这里可能出现什么问题:

我有一些来自Biopython的模块,我可以在使用交互式提示或通过命令行执行python脚本时轻松导入。

问题是,当我尝试在web可执行的cgi脚本中导入相同的biopython模块时,我得到一个“导入错误”

:没有名为Bio的模块

这里有什么想法?

python cgi bioinformatics biopython
3个回答
5
投票

这里有几种可能性:

  • Apache(在Unix上)通常作为不同的用户运行,并且在不同的环境中从命令行运行到python。尝试制作一个只打印出sys.versionsys.prefix的小脚本,并通过apache和命令行比较结果,以确保在两种环境中都运行相同的python安装。
  • Biopython是安装在您的主目录下,还是只能为您的普通用户读取?同样,因为apache通常以不同的用户身份运行,所以您可能无法访问该位置,因此无法导入它。
  • 在尝试导入Biopython之前,你能尝试做import site吗?当您通过apache运行时,可能会阻止导入站点包。

4
投票

在cgi脚本中,您可以尝试在导入之前添加此包的路径。

sys.path.insert(0, 'path to biopython package')

如果您使用的是Apache,则应该能够使用指令SetEnv在conf文件中设置PYTHONPATH

SetEnv PYTHONPATH "path to biopython package"

0
投票

我有同样的问题。我通过终端中的命令更改Linux Ubuntu中Apache的用户来解决这个问题:

sudo gedit /etc/apache2/envvars

请将www-dataexport APACHE_RUN_USER上的export APACHE_RUN_GROUP更改为可以运行python脚本的当前用户或用户。玩的很开心 ;)

© www.soinside.com 2019 - 2024. All rights reserved.