python convert png to ico

from PIL import Image
filename = r'logo.png'
img = Image.open(filename)
img.save('logo.ico')

# ====================

# Optionally, you may specify the icon sizes you want:

icon_sizes = [(16,16), (32, 32), (48, 48), (64,64)]
img.save('logo.ico', sizes=icon_sizes)

Here is what the above code is Doing:
1. Open the image file
2. Save the image as an icon file
3. Specify the icon sizes you want