Estoy tratando de convertir un script .py a un .exe
cx_Freeze comstack el exe exitosamente. Sin embargo, cuando ejecuto el archivo exe, se produce este error:
ImportError: el paquete ‘appdirs’ es obligatorio; Normalmente, este paquete se incluye con este paquete, por lo que si recibe esta advertencia, consulte al empaquetador de su distribución.
Aquí está mi setup.py
from cx_Freeze import setup, Executable setup( name = "dbx_sharelink" , version = "0.1" , description = " " , executables = [Executable("dbx_sharelink.py")] , )
Código fuente de script de Python
import sys import dropbox import pandas as pd import sys import os dbx = dropbox.Dropbox('xxxxxxxxxxxxxxxxx') def getSharedLink(full_path): try: link = dbx.sharing_create_shared_link(full_path).url except dropbox.exceptions.ApiError as err: print('*** API error', err) return None return link print(sys.argv[1]) link = getSharedLink("/A_DATA/data") df = pd.DataFrame([{'link':link}]) df.to_clipboard(index=False,header=False) os.system("pause")
¿Cómo resolver este error?
Estaba teniendo el mismo problema. Agregue el parámetro de opciones al archivo setup.py de esta manera:
setup (name="MyAPP", version="0.1", description = "My GUI application!", options = {'build_exe': {'packages':packages}}, . . .)
debajo de los paquetes puestos (los paquetes deben venir antes de la configuración ):
packages = ['pkg_resources._vendor']
(Puedes agregar más paquetes si tienes problemas similares como este …)
Puede leer más sobre las opciones aquí: http://cx-freeze.readthedocs.io/en/latest/distutils.html#build-exe
¡Esto resolvió mi problema!
Yo tuve el mismo problema. Solo agrega los paquetes a las opciones
additional_mods = ['appdirs', 'packaging.version'] additional_packages = ['scipy', 'numpy', 'appdirs', 'packaging'] options = { 'build_exe': { 'packages': additional_packages, 'includes': additional_mods, }
Intentando actualizar a setuptools 34.4.1, esto me funcionó