Переход от .py к .exe - PullRequest
       24

Переход от .py к .exe

3 голосов
/ 13 июля 2011

Хорошо, соответствующую информацию можно найти в этой теме (Это то, что они здесь называют?).

Python Calculator Divide by Zero / Sqrting a Neg.Int.программа сбоя

Извините, если бы мне просто пришлось сохранить его в этой ветке, я не знаком с этим этикетом здесь и также не был уверен, что его увидят.

В любом случае, яЯ внес некоторые изменения в код, приведенный там.Это мой текущий конечный продукт.

import math

def convertString(str):
    try:
        returnValue = int(str)
    except ValueError:
        returnValue = float(str)
    return returnValue

def addition(a, B):
    return convertString(a) + convertString(B)

def subtraction(a, B):
    return convertString(a) - convertString(B)

def multiplication(a, B):
    return convertString(a) * convertString(B)

def division(a, B):
    return convertString(a) / convertString(B)

def sqrt(a):
    return math.sqrt(convertString(a))

def expo(a, B):
    x = convertString(a)
    y = convertString(B)
    return math.pow(x, y)

def fact(a):
    return math.factorial(convertString(a))

keepProgramRunning = True

print "Welcome to [Removed]'s 2011 4-H Project! This is a simple calculator coded in  Python, which is a high-level programming language. Java, C, C++, and Perl are  other high-level programming languages that you may have heard of. Press Enter  to get started!"
print ""
raw_input('')

while keepProgramRunning:
    print "Please select what you would like to do:"
    print ""
    print "1) Addition"
    print "2) Subtraction"
    print "3) Multiplication"
    print "4) Division"
    print "5) Square Root"
    print "6) Exponentiation"
    print "7) Factorial"
    print "8) Quit Program"
    print ""
    print "Input the number of the action that you wish to do here, then press Enter:",
    choice = raw_input()    

    if choice == "1":
        print ""
        numberA = raw_input("Enter the first addend: ")
        numberB = raw_input("Enter the second addend: ")
        print ""
        print "The sum of those numbers is", addition(numberA, numberB)
        print ""
        print "Press the Enter key to continue."
        raw_input('')
    elif choice == "2":
        print ""
        numberA = raw_input("Enter the first term: ")
        numberB = raw_input("Enter the second term: ")
        print ""
        print "The difference of those numbers is", subtraction(numberA, numberB)
        print ""
        print "Press the Enter key to continue."
        raw_input('')
    elif choice == "3":
        print ""
        numberA = raw_input("Enter the first factor: ")
        numberB = raw_input("Enter the second factor: ")
        print ""
        print "The product of those numbers is", multiplication(numberA, numberB)
        print ""
        print "Press the Enter key to continue."
        raw_input('')
    elif choice == "4":
        print ""
        numberA = raw_input("Enter the dividend: ")
        numberB = raw_input("Enter the divisor: ")
        while float(numberB) == 0:
            print ""
            print "You cannot divide by zero. Please choose another divisor."
            print ""
            numberB = raw_input("Enter your divisor: ")
        print ""
        print "The quotient of those numbers is", division(numberA, numberB)
        print ""
        print "Press the Enter key to continue."
        raw_input('')
    elif choice == "5":
        while True:
            print ""
            numberA = raw_input("Enter the number you wish to find the square root of: ")
            if float(numberA) >= 0:
                break
            print ""
            print "You cannot take the square root of a negative number."
        print ""
        print "The square root of that number is", sqrt(numberA)
        print ""
        print "Press the Enter key to continue."
        raw_input('')
    elif choice == "6":
        print ""
        numberA = raw_input("Enter the base: ")
        numberB = raw_input("Enter the exponent: ")
        print ""
        print "The solution to that expression is", expo(numberA, numberB)
        print ""
        print "Press the Enter key to continue."
        raw_input('')
    elif choice == "7":
        while True:
            print ""
            numberA = raw_input("Enter the number you wish to find the factorial of: ")
            if float(numberA) >= 0:
                break
            print ""
            print "You can only find the factorial of non-negative integers."
        print ""
        print "The factorial of that number is", fact(numberA)
        print ""
        print "Press the Enter key to continue."
        raw_input('')
    elif choice == "8":
        print ""
        print "Goodbye! Thank you for your time spent both judging my project and those of     everyone else! Have a nice day! :)"
        print ""
        print "Press the Enter key to close."
        raw_input('')
        keepProgramRunning = False
    else:
        print ""
        print "The key you have selected is not assigned to an action. Please choose from the  listed options."
        print ""
        print "Press the Enter key to continue."
        raw_input('')

Я решил проблему с закрытием, и я уже пробежал ее, чтобы убедиться, что все работает и отображается правильно (разделительные линии там, где они должныбыть, слова не разбиваются на строки и т. д.).Теперь я (полагаю, что я) готов сделать это автономным.Из того, что я видел, это возможно, и следует даже добавить что-нибудь импортированное (В этом случае математическая библиотека (я думаю, это то, что она называется) импортируется, поэтому она будет включена в автономную версию, правильно?).Итак, как говорится в моем заголовке, как перейти от файла Python к исполняемому файлу?Я уже пытался найти ответ сам, но данные инструменты либо устарели, либо не работают (по крайней мере, как я их использовал).

Любой совет?

Ответы [ 2 ]

6 голосов
/ 13 июля 2011

Поскольку вы упомянули другие квесты и устаревшие инструменты (я предполагаю, что вы имеете в виду py2exe, последнее обновление от 2008 года), взгляните на PyInstaller и его документацию .

Другим инструментом будет cx_freeze .

1 голос
/ 13 июля 2011

Py2exe всегда работал для меня.Я сделал exe из скрипта, используя PIL, и он работал без проблем.Документация хорошая, и мне удалось ее упаковать за считанные минуты.

...