ImportError:即使已安装,也没有名为htmlcreator的模块

时间:2020-05-20 20:25:23

标签: python apache2 python-module geany

下面的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安装)。

3 个答案:

答案 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在两种环境中均可用。