python - 使用 py2exe 和 BeautifulSoup。脚本运行正常,但转换为 .exe 后,显示错误

标签 python python-2.7 beautifulsoup py2exe python-module

我用 beautifulSoup 创建了一个脚本来废弃一个网站。当我运行脚本时,我得到了我想要的。 因此,我决定将其转换为 .exe 文件。转换已完成,但它显示 --- the following modules appear to be missing '_scproxy', 'builder.parserRejectedMarkup','builder.builder_registry', 'cchardet', 'chardet', 'html.parser', 'htmlslib', 'html5lib', 'iconvz' etc.

但是它创建了 .exe 文件,当我尝试运行 .exe 文件时,它显示 -

bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

我尝试卸载并重新安装该软件包,并尝试从可用内容中进行搜索,但这没有帮助。 这是脚本(p3_extract.py)的代码:

from bs4 import BeautifulSoup
import urllib2
import lxml
url="http://fuckinghomepage.com/"
page= urllib2.urlopen(url)
soup_package = BeautifulSoup(page, "lxml")
p1_soup= soup_package.find("p")
p2_soup = p1_soup.next_sibling
p3_soup = p2_soup.next_sibling
print p3_soup.string

这里是 setup.py:

from distutils.core import setup
import py2exe
import lxml
setup(console=['p3_extract.py'])

帮帮我。(我正在 win10-32bit 和 python 2.7 上执行此操作。) 谢谢

最佳答案

我在编译一个使用lxmlselenium(而不是bs4)的项目时遇到了类似的问题。解决方案是在 setup.py py2exe 选项中导入包,而不是像您那样将它们导入脚本中......

向 setup.py 添加选项

您可以使用更多py2exe options以确保您导入项目所需的所有模块和包。例如

# setup.py
from distutils.core import setup
import py2exe
setup(console=["p3_exctract.py"],
      options={
              "py2exe":{
                    "packages": ["lxml"] # List of the package you want to make sure that will be imported
               }
       }
    )

通过这种方式,您可以强制导入项目中缺少的脚本

关于python - 使用 py2exe 和 BeautifulSoup。脚本运行正常,但转换为 .exe 后,显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34697273/

相关文章:

python - 使用 Python 循环抓取多个 URL,但当我遍历网站页码时数据没有改变?

python - Beautiful Soup (bs4) 如何只匹配一个,而且只有一个,css 类

python - matplotlib:同时绘制不同的图

python - 围绕按位运算符语句的讨论

python - 使用 gdb 时数据目录中有多个目录

python - Pyperclip 报错

python - 导入/包含配置 Python

python - 在 BeautifulSoup 中提取带换行符的文本

python - 如何删除 pandas 中匹配一列并在另一列上满足方程式的行?

python - 使用 pickle 将巨大的二元字典保存到文件中