我为“Python2.7”安装了“py2exe”,制作了一个“Hello World”程序,使用py2exe来构建它的exe并且它工作得很好。
现在当我尝试构建我的实际代码的exe时,文件夹被创建并且exe也被创建没有任何问题但是当我启动exe时控制台出现不到一秒钟并关闭。
这种情况和测试程序的区别仅在于我在这种情况下有多个代码文件,在其中一些代码文件中我也导入了一些文件/库 以下是分布在不同文件中的导入命令:
from bs4 import BeautifulSoup
import time
import requests
from RdWrtCls import *
import os
import openpyxl
最初我的源代码是:
from distutils.core import setup
import py2exe
from glob import glob
setup (console =['Crawler.py'])
当这不起作用时我做了一些研究,发现有时会出现dll缺失问题,所以我将代码修改为:
from distutils.core import setup
import py2exe
from glob import glob
data_files = [("Microsoft.VC100.CRT", glob(r'C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\redist\\x86\\Microsoft.VC100.CRT\\*.*'))]
setup(data_files =data_files,console =['Crawler.py'])
我陷入了这个问题,所以任何和各种各样的帮助都会受到高度赞赏。
其他资讯: 我在用: Windows 7的, Python 2.7-32位
更新: 我在一个关于堆栈溢出的问题中找到了一个类似问题的建议,建议通过命令提示符运行EXE。我通过命令提示符运行程序并向我显示错误
Import error : No module named bs4
答案 0 :(得分:3)
我能够成功构建一个工作的exe。以下是我采取的步骤,希望它们对将来面临这些问题的其他人有所帮助。
1)启动程序使用命令提示符,以便查看错误。
2)将我的所有代码(函数,类)放在主文件中。
3)重新安装最新版本的pip
4)使用pip
卸载并重新安装BeautifulSoup4pip uninstall BeautifulSoup4
pip install BeautifulSoup4
5)现在“jdcal”开始出现问题(在安装openpyxl时安装)
6)使用pip卸载openpyxl
7)使用pip卸载jdcal
8)使用pip重新安装openpyxl(它自动安装了jdcal)
9)现在exe运行完美。
答案 1 :(得分:1)
我的项目也在jdcal失败了。我在B-Abbasi的最后几步中取得了成功:
6)使用pip卸载openpyxl (在Win7上:pythonXX \ Scripts \ pip uninstall openpyxl)
7)使用pip卸载jdcal
8)使用pip重新安装openpyxl(它自动安装了jdcal)
9)现在exe运行完美。