Tengo un directorio lleno de scripts (digamos project/bin
). También tengo una biblioteca ubicada en project/lib
y quiero que los scripts carguen automáticamente. Esto es lo que normalmente utilizo en la parte superior de cada script:Python: la mejor forma de agregar sys.path en relación con el script actual en ejecución
#!/usr/bin/python
from os.path import dirname, realpath, sep, pardir
import sys
sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib")
# ... now the real code
import mylib
Esta es una especie de engorroso, feo, y tiene que ser pegado al principio de cada archivo. ¿Hay una mejor manera de hacer esto?
realmente lo que estoy esperando es algo tan suave como esta:
#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")
import mylib
O mejor aún, algo que no se rompería cuando mi editor (u otra persona que tiene acceso) decide reordenar las importaciones como parte de su proceso de limpieza:
#!/usr/bin/python --relpath_append ../lib
import mylib
Eso no sería directamente al puerto de plataformas no POSIX, pero sería mantener las cosas limpias.
Ver también: http://stackoverflow.com/questions/2349991/python-how-to-import-other-python-files/20749411#20749411 – dreftymac