Python to exe兼容性错误

时间:2015-01-24 17:59:56

标签: python compatibility executable x86-64

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

很长的帖子,但我只是想确保你拥有所需的所有信息:) 在此先感谢您,我会非常了解这一点!

0 个答案:

没有答案