9

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

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

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

: 没有名为 Bio 的模块

这里有什么想法吗?

4

3 回答 3

7

以下是几种可能性:

  • Apache(在 Unix 上)通常以不同的用户和不同的环境从命令行运行到 python。尝试制作一个只打印出sys.versionand的小脚本,sys.prefix并通过 apache 和命令行比较结果,以确保您在两个环境中从相同的 python 安装运行。
  • Biopython 是安装在您的主目录下,还是仅对您的普通用户可读?同样,因为 apache 通常以不同的用户身份运行,所以您可能无权访问该位置,因此无法导入它。
  • 你可以import site在尝试导入 Biopython 之前尝试做吗?当您通过 apache 运行时,可能有什么东西阻止了站点包的导入。
于 2010-09-24T03:39:03.513 回答
4

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

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

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

SetEnv PYTHONPATH "path to biopython package"
于 2010-09-24T02:47:22.217 回答
1

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

sudo gedit /etc/apache2/envvars

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

于 2019-02-22T21:29:44.870 回答