0

我正在尝试使用 cx_Freeze 将 python 脚本转换为 exe,但是在转换并尝试运行它之后,它出现了错误的“没有名为“re”的模块”。我不确定那是什么,但我根本没有在我的代码中引用它。这是我的代码和设置脚本的链接:

设置: http: //pastebin.com/6JN093u7

我的代码: http: //pastebin.com/nEinps53

我在 win7 上使用 Python 3.3,尽管我的代码是用 3.2 编写的,如果这有所不同的话。如果我可以提供更多信息,请询问。

4

1 回答 1

0
  1. 您的代码通常会自行编译吗(在您通过 cx_Freeze 运行它之前)?“re”是python正则表达式库。

  2. 如果你是为客户做这个,你确定你的合同允许你像这样公开发布完整的源代码吗?

  3. 无意冒犯,但你的编码风格真的很糟糕。你重复了很多代码:你可以通过编写通用函数来大大简化这个程序。例如,第 16-60 行可以简化为:

    def get_user_response(text, err_text="Please enter a number"):
        derp=False
        while derp == False:
            try:
                val = str(input(text))
                derp = True
             except ValueError:
                    win32api.MessageBox(None,err_text, "Error!")
                    derp = False
            derp = False
        return val
    room_price.write(get_user_response("What is the room price?"))
    night_price.write(get_user_response("What is the laundry price?"))
    Laundry_price.write(get_user_response("What is the internet price per hour?"))
    Telephone_price.write(get_user_response("What is the telephone price per hour?"))
    
  4. 关于这一点:考虑最后 4 行:前两个变量名使用小写,后两个变量使用混合大小写。为什么?这只会让你的生活变得艰难。您应该选择一个命名约定并坚持下去。

  5. 您的PassworD()功能只是一个非常非常糟糕的主意。不要以纯文本形式存储密码。一个常见的解决方案是将密码存储为加盐哈希,但我不会假装在加密或安全方面非常出色。但我知道你的做法是个坏主意,你应该研究以明文形式存储密码的替代解决方案。

无论如何:我看不到您的特定错误的来源。对不起,你必须自己想办法。但是您可以通过各种方式大大简化您的代码(其中最重要的是划分频繁重复的代码并使用命名约定),并且更简单的代码更容易调试。

于 2013-02-25T19:24:47.113 回答