El código Python a continuación proporciona una funcionalidad adicional, incluyendo que funciona a la perfección con py2exe
ejecutables.
Utilizo un código similar para hacer clic en Me gusta para encontrar las rutas relativas al script en ejecución, también conocido como __main__
. como beneficio adicional, funciona multiplataforma incluyendo Windows.
import imp
import os
import sys
def main_is_frozen():
return (hasattr(sys, "frozen") or # new py2exe
hasattr(sys, "importers") # old py2exe
or imp.is_frozen("__main__")) # tools/freeze
def get_main_dir():
if main_is_frozen():
# print 'Running from path', os.path.dirname(sys.executable)
return os.path.dirname(sys.executable)
return os.path.dirname(sys.argv[0])
# find path to where we are running
path_to_script=get_main_dir()
# OPTIONAL:
# add the sibling 'lib' dir to our module search path
lib_path = os.path.join(get_main_dir(), os.path.pardir, 'lib')
sys.path.insert(0, lib_path)
# OPTIONAL:
# use info to find relative data files in 'data' subdir
datafile1 = os.path.join(get_main_dir(), 'data', 'file1')
Esperemos que el código de ejemplo anterior puede proporcionar información adicional sobre cómo determinar la ruta de acceso al script que corre ...
¡Aseado! Es importante darse cuenta de que hay que importar __may__ - hice una conjetura al azar e intenté la segunda línea, pero falló - ahora sé por qué. –
'__main__' no siempre tiene el atributo' __file__'. – jfs
Sí, estaría bien si la respuesta pudiera actualizarse para mencionar eso. –