Hey StackOverflow社区! 我是新来的,也是编程的新手,但我在做事时遇到了一些麻烦,让我解释一下。
我尝试编写一个Python 2.7脚本,我的朋友可以将其作为.exe运行,在启动时自我介绍并询问用户是否要打开word文档(在Python脚本之外)与可执行文件相同的文件夹)。 当用户再次点击控制台窗口而不必在打开word文档后使用sleep(8)+ sleep(5)时,如果有办法继续脚本,那就太棒了。
之后,它应该解释有关word文档的一些内容,然后用户可以选择回复他们想要的任何问题。按回车后,回复将发送到我自己的邮件(使用smtp)。 之后,他们可以选择关闭脚本或阅读一个我仍然需要考虑的蹩脚笑话。
好的,这就是我想到的剧本。
现在我知道我的朋友都不知道如何打开.py脚本,这就是我为什么要为他们制作常规可执行文件的原因(当Windows版本完成时我还需要一个适用于Mac的.app版本,但后来有人担心)。
我已经使用cx_Freeze来实现这一目标并一直工作,直到我想要工作的所有内容实际工作。
单词文档用cx冻结版本打开(不知道是否有更通用的方式然后webbrowser.open但我不知道文件的路径是什么在我朋友的电脑上,所以我无法使用实际指向路径的子进程,其他一切也可以正常工作。 现在我在64位Win 8.1 PC上制作了这个。 我在其他32位Win 7 PC上对此进行了测试,效果非常好。 但当我把它发送给我的父亲时,他也有一台32位的Win 7 PC,它显示了一个"这个版本的文件与你正在运行的Windows版本不兼容" 错误。现在我已经在下载的游戏中遇到了公平的兼容性错误,所以我尝试使用不同的Win兼容模式,但没有任何效果。
所以现在我已经尝试使用pyinstaller(包括pywin32的东西)创建一个.exe并且同样的问题仍然存在。它可以在我的电脑上运行,但不能在我父亲的32位Win 7 PC上运行。 以管理员身份运行它并不起作用,改变兼容性的东西并不起作用,尝试不同的.exe内容并不起作用。所以基本上我没有想法了。
你能帮助我吗? 如果我需要安装一些东西,例如,添加32位依赖项或其他东西,那么我想请求一些安装它的步骤,因为我对此非常陌生。
这是我的剧本:
import webbrowser
import smtplib
from time import sleep
def sendemail(from_addr, to_addr_list, cc_addr_list,
subject, message,
login, password,
smtpserver='smtp.gmail.com:587'):
header = 'From: %s\n' % from_addr
header += 'To: %s\n' % ','.join(to_addr_list)
header += 'Cc: %s\n' % ','.join(cc_addr_list)
header += 'Subject: %s\n\n' % subject
message = header + message
server = smtplib.SMTP(smtpserver)
server.starttls()
server.login(login,password)
problems = server.sendmail(from_addr, to_addr_list, message)
server.quit()
print "Blabla test lines bla\n"
sleep(4)
check_one = raw_input("Open word thing now?(yes/no)")
if check_one == "yes":
webbrowser.open("wordthing.doc")
sleep(8)
print "Done! bla"
if check_one == "no":
print "Meh"
sleep(5)
print "blabla more bla"
sleep(3)
print ("The answer to the question below "
"will be mailed to my inbox \n")
sleep(2)
sendemail(from_addr = 'thingthatmails@gmail.com',
to_addr_list = ['myownmail@gmail.com'],
cc_addr_list = ['thingthatmails@gmail.com'],
subject = 'Stack overflow question bla',
message = raw_input(" Is this a question?(yes/no) "),
login = 'thingthatmails@gmail.com',
password = 'thingthatmailspassword')
print "Mail sent!\n"
sleep(3)
print "Thanks for mailing blabla"
sleep(2)
print "Blablabla see you soon \n"
sleep(2)
close_script = raw_input("Type exit to close or ha! "
"for a lame ass joke > /n")
if close_script == "exit":
print "Closing..."
sleep(1)
if close_script == "ha!":
print "badumm tss"
sleep(2)
print "..."
sleep(1)
print "I couldn't think of a joke here"
sleep(1)
这是我用来创建带有cx_Freeze的.exe的setup.py:
from cx_Freeze import setup, Executable
setup( name = "stackoverflow" , version = "0.1" , description = "test" , executables = [Executable("stackoverflow.py")] , )
这是我在powershell中用来创建带有cx_Freeze的.exe的命令:
C:\ Python27 \ python.exe setup.py build
这是我在powershell中用来创建带有pyinstaller的.exe的命令:
python C:\ pyinstaller-2.1 \ pyinstaller.py --onefile --console stackoverflow.py
很长的帖子,但我只是想确保你拥有所需的所有信息:) 在此先感谢您,我会非常了解这一点!