Использование pyinstaller в скрипте python приводит к огромному размеру файла - PullRequest
0 голосов
/ 22 сентября 2018

Хорошо, теперь у меня все работает, чтобы сделать .exe из моего .py файла.

Проблема в том, что размер файла огромен для того, что он делает (200 МБ).

Вот исходный код:

#imports
import numpy
import os

#initializing
board = [[0] * 3 for _ in range(3)]
player = 0
def playerturn():
    global player
    while player<=2:
        os.system('cls' if os.name == 'nt' else 'clear')
        if checkifwon():
            break
        if player==1:
            print('Player 1s turn')
        if player==2:
            print('Player 2s turn')
        print(board[0])
        print(board[1])
        print(board[2])
        print('Controls:')
        print('7 8 9')
        print('4 5 6')
        print('1 2 3')
        sign=int(input('Enter a number to place your sign'))
#1 to 3
        if sign==1:
            if board[2][0]==0:
                board[2][0]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
        elif sign==2:
            if board[2][1]==0:
                board[2][1]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
        elif sign==3:
            if board[2][2]==0:
                board[2][2]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
#4 to 6
        elif sign==4:
            if board[1][0]==0:
                board[1][0]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
        elif sign==5:
            if board[1][1]==0:
                board[1][1]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
        elif sign==6:
            if board[1][2]==0:
                board[1][2]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
#7 to 9
        elif sign==7:
            if board[0][0]==0:
                board[0][0]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
        elif sign==8:
            if board[0][1]==0:
                board[0][1]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
        elif sign==9:
            if board[0][2]==0:
                board[0][2]=player
            else:
                print('Please choose an unoccupied field.')
                playerturn()
        else:
            print('Please enter a number from 1 to 9')
            playerturn()
        player+=1
def doround():
    global player
    player=1
    playerturn()
def threesame(a,b,c):
    if a!=0 and a==b and b==c:
        return True
    else:
        return False
def checkifwon():
    if threesame(board[0][0],board[1][0],board[2][0]):
        return board[0][0]
    elif threesame(board[0][1],board[1][1],board[2][1]):
        return board[0][1]
    elif threesame(board[0][2],board[1][2],board[2][2]):
        return board[0][2]
    elif threesame(board[0][0],board[0][1],board[0][2]):
        return board[0][0]
    elif threesame(board[1][0],board[1][1],board[1][2]):
        return board[1][0]
    elif threesame(board[2][0],board[2][1],board[2][2]):
        return board[2][0]
    elif threesame(board[0][0],board[1][1],board[2][2]):
        return board[0][0]
    elif threesame(board[0][2],board[1][1],board[0][2]):
        return board[0][2]
    else:
        return False
def tictac():
    global player
    while checkifwon()==False:
        doround()
    print('Player',end='')
    print(checkifwon(),end=' ')
    print('won')
tictac()
print('thanks for playing')
input("Press Enter to quit...")

Теперь я хочу знать, что я могу сделать, чтобы уменьшить размер файла .exe.

Команда, которую я использовал для ее создания, была

pyinstaller --onefile tictactoe.py

Я сделал это на компьютере с Windows 10.

Я прочитал, что вы можете исключить некоторые импортные данные, но можете ли вы как-нибудь автоматически исключить их?

1 Ответ

0 голосов
/ 24 сентября 2018

what I can do to shrink the filesize of the .exe?

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

Одним из решений, которое я предпочитаю, является использование чистой среды, такой как virtualenv или докер, с установленными только необходимыми модулями.

...