Bonjour,
Je travaille en python3 (pyqt4) sous Kubuntu et je suis confronté à un soucis :
Pour savoir où se trouve le logiciel, j'utilise la commande :
Celle-ci fonctionne très bien sauf dans un cas spécial.
Code : Sélectionner tout - Visualiser dans une fenêtre à part os.path.abspath(os.path.dirname(sys.argv[0]))
Sachant que mon logiciel peut être portable ou dans un ppa (dépôt privé), celui-ci peut se trouver à divers endroits.
Pour la version packagée pour le ppa, j'utilise simplement un lien (ln -s) depuis /usr/bin pointant vers le logiciel se trouvant dans /usr/share/mon_appli.
Or si je lance le logiciel depuis la commande (donc sans aucune mention de /usr/share/mon_appli), il me dit qu'il se trouve dans /usr/bin.
Alors bien évidement, il est possible de faire un bête if :
Mais uniquement parce que je sais vers où pointe le lien dans le cas actuel, mais si quelqu'un fait un lien pour la version portable, impossible pour le logiciel de le savoir...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if os.path.exists(os.path.abspath(sys.argv[0])): dir = os.path.abspath(os.path.dirname(sys.argv[0])) elif os.path.exists("/usr/sharemon_appli/fichier_python"): dir = "/usr/sharemon_appli"
Mais ma question est plus théorique, comment peut-on contourner le problème de détection du dossier ?
Comment faire pour ne pas que l'emplacement renvoyé soit /usr/bin mais bien l'emplacement du logiciel ?
Le tout en python3 bien évidement, on va éviter de faire un local ou un find sur tout le pc :p
Merki et bonne journée.
PS : je ne pourrais pas répondre pendant quelques jours mais je viendrais lire vos réponses
Partager