Mam katalog pełen skryptów (powiedzmy project/bin
). Mam również bibliotekę znajdującą się w project/lib
i chcę, aby skrypty automatycznie ją ładowały. Oto, czego zwykle używam u góry każdego skryptu:
#!/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
Jest to trochę kłopotliwe, brzydkie i trzeba je wkleić na początku każdego pliku. Czy jest lepszy sposób, aby to zrobić?
Naprawdę liczę na coś tak gładkiego, jak to:
#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")
import mylib
Lub jeszcze lepiej, coś, co nie zepsuje się, gdy mój redaktor (lub ktoś inny, kto ma dostęp do zatwierdzania) zdecyduje się zmienić kolejność importu w ramach procesu czyszczenia:
#!/usr/bin/python --relpath_append ../lib
import mylib
To nie przenosi się bezpośrednio na platformy inne niż POSIX, ale utrzymałoby wszystko w czystości.