cx_Freeze – Se requiere el paquete appdirs

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ó