下面的Python脚本(testbov.py)从小说《 Bovary夫人》中提取了一个句子。
'''
#!/usr/bin/env python
from random import randint
import io
import codecs
from htmlcreator import HTMLDocument
import webbrowser
with codecs.open('./bovary_sc_no_susp.txt', 'r', encoding='utf8', errors='ignore') as source:
data=source.read()
splot_data=data.split(".")
has = randint(0,len(splot_data))
prise = splot_data[has]
document = HTMLDocument()
document.set_title('a slice of Bovary')
document.add_header('The slice')
document.add_text(prise)
document.write('my_document.html')
webbrowser.open('./my_document.html')
'''
该脚本在通过以下命令'python testbov.py'从所在目录(/ var / www / html / test / cgi-bin)运行时会执行其操作,并以浏览器页面。 (Python是miniconda安装的python 3.7)
使用运行按钮从Geany启动脚本时,它将打开一个终端,并显示以下错误消息:
Traceback (most recent call last):
File "testbov .py", line 7, in <module>
from htmlcreator import HTMLDocument
ImportError: No module named htmlcreator
------------------
(program exited with code: 1)
Press return to continue
通过浏览器指向localhost / test调用脚本时,测试目录中的index.html如下:
<html><head><title>minimal page</title></head>
<form action="http://localhost/test/cgi-bin/testbov.py" />
<input type="submit" value="Go !" />
</form></html>
我在/var/log/apache2/error.log中收到以下消息,并显示错误500:
Traceback (most recent call last):
File "/var/www/html/test/cgi-bin/testbov.py", line 7, in <module>
from htmlcreator import HTMLDocument
ImportError: No module named htmlcreator
因此,当终端能够执行此操作时,似乎浏览器和geany都无法找到htmlcreator(通过pip安装)。
答案 0 :(得分:0)
正确的导入是
from html_creator import Document
答案 1 :(得分:0)
我相信它可以在自己的虚拟环境中运行。您需要在该虚拟环境中安装模块。 您可以在脚本中检查它。 Determine if Python is running inside virtualenv
import sys
def is_venv():
return (hasattr(sys, 'real_prefix') or
(hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix))
if is_venv():
print('inside virtualenv or venv')
else:
print('outside virtualenv or venv')
答案 2 :(得分:0)
请添加以下小的调试代码:
import os
print(os.environ['_'])
在脚本的开头,以验证在两种情况下使用哪个python执行脚本。
然后确保它们完全相同或htmlcreator
在两种环境中均可用。