当我从网络运行 CGI 脚本时,为什么 python 找不到某些模块?
我不知道这里可能出现什么问题:
我有一些来自 Biopython 的模块,当使用交互式提示或通过命令行执行 python 脚本时,我可以轻松导入这些模块。
问题是,当我尝试在 Web 可执行 cgi 脚本中导入相同的 biopython 模块时,我收到“导入错误”
:没有 名为 Bio 的模块
这里有什么想法吗?
I have no idea what could be the problem here:
I have some modules from Biopython which I can import easily when using the interactive prompt or executing python scripts via the command-line.
The problem is, when I try and import the same biopython modules in a web-executable cgi script, I get a "Import Error"
: No
module named Bio
Any ideas here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下是几种可能性:
sys.version
和sys.prefix
的小脚本,并通过 apache 和命令行比较结果,以确保您是在两个环境中从相同的 python 安装运行。import site
吗?当您通过 apache 运行时,可能有些东西阻止导入站点包。Here are a couple of possibilities:
sys.version
andsys.prefix
, and compare the result through apache and via the command line, to make sure that you're running from the same installation of python in both environments.import site
before trying to import Biopython? Perhaps something is preventing site packages from being imported when you run through apache.在 cgi 脚本中,您可以尝试在导入之前添加此包的路径。
如果您使用 Apache,您应该能够使用指令 SetEnv 在 conf 文件中设置 PYTHONPATH
In the cgi script, you could try to add the path to this package before any import.
If you are using Apache, you should be able to set the PYTHONPATH in conf file with directive SetEnv
我有同样的问题。我通过在终端中使用命令更改 Linux Ubuntu 中的 Apache 用户解决了这个问题:
请更改
export APACHE_RUN_USER
和export APACHE_RUN_GROUP
上的www-data
code> 到您当前的用户或可以运行 python 脚本的用户。玩的很开心 ;)
I had same problem. I solved this problem by changing user of Apache in Linux Ubuntu by command in terminal:
Please change
www-data
onexport APACHE_RUN_USER
andexport APACHE_RUN_GROUP
to your current user or user that can run python script.Have a good time ;)