139 votes

Python : Meilleure façon d'ajouter à sys.path relatif au script en cours d'exécution

J'ai un répertoire rempli de scripts (disons project/bin ). Je dispose également d'une bibliothèque située à project/lib et que les scripts le chargent automatiquement. C'est ce que j'utilise normalement au début de chaque scripts :

#!/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

C'est un peu lourd, moche, et il faut le coller au début de chaque fichier. Existe-t-il une meilleure façon de procéder ?

Ce que j'espère vraiment, c'est quelque chose d'aussi fluide que cela :

#!/usr/bin/python
import sys.path
from os.path import pardir, sep
sys.path.append_relative(pardir + sep + "lib")

import mylib

Ou mieux encore, quelque chose qui ne se briserait pas lorsque mon éditeur (ou quelqu'un d'autre qui a un accès autorisé) déciderait de réorganiser les importations dans le cadre de son processus de nettoyage :

#!/usr/bin/python --relpath_append ../lib
import mylib

Cette solution ne serait pas directement portable sur les plates-formes non-posix, mais elle permettrait de garder les choses propres.

0voto

siful islam Points 361

Lorsque nous essayons d'exécuter un fichier python avec le chemin d'accès à partir du terminal.

import sys
#For file name
file_name=sys.argv[0]
#For first argument
dir= sys.argv[1]
print("File Name: {}, argument dir: {}".format(file_name, dir)

Enregistrez le fichier (test.py).

Système de fonctionnement.

Ouvrez le terminal et allez dans le répertoire où se trouve le fichier de sauvegarde. puis écrivez

python test.py "/home/saiful/Desktop/bird.jpg"

Appuyer sur la touche "Entrée".

Sortie :

File Name: test, Argument dir: /home/saiful/Desktop/bird.jpg

0voto

user7693644 Points 19

J'utilise :

from site import addsitedir

Ensuite, vous pouvez utiliser n'importe quel répertoire relatif ! addsitedir('..\lib') ; les deux points impliquent le déplacement (vers le haut) d'un répertoire en premier.

Rappelez-vous que tout dépend de votre répertoire de travail actuel. Si vous C:\Joe\Jen\Becky alors ajouteitedir(' \lib ') dans votre chemin d'accès C:\Joe\Jen\lib

C:\
  |__Joe
      |_ Jen
      |     |_ Becky
      |_ lib

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X