145 votes

Élargir le chemin de recherche de Python à d'autres sources

Je viens de rejoindre un projet avec une base de code existante assez importante. Nous développons sous linux et n'utilisons pas d'IDE. Nous utilisons la ligne de commande. J'essaie de comprendre comment faire en sorte que Python recherche le bon chemin lorsque je lance des modules de projet. Par exemple, quand je lance quelque chose comme :

python someprojectfile.py

J'obtiens

ImportError: no module named core.'somemodule'

J'obtiens ce résultat pour toutes mes importations et je suppose qu'il s'agit d'un problème avec le chemin d'accès.

Comment faire pour que Python recherche ~/codez/project/ et tous les fichiers et dossiers pour *.py lors des déclarations d'importation ?

1voto

La première tâche consiste à déterminer où l'environnement actuel obtient ses bibliothèques standard. C'est là que je stockerai mes modules de POO.

Import numpy

numpy.__file__

Vous obtenez un catalogue sur votre environnement. Pour un autre ordinateur, il est conseillé de créer un répertoire séparé pour les modules OOP.

Import sys 

sys.path.append('F:/Python/My_libra/')

0voto

fcm Points 519

Nouvelle option pour une ancienne question.
Installation fail2ban sur Debian, on dirait qu'il est codé en dur pour s'installer sur /usr/lib/python3/dist-packages/fail2ban un chemin qui n'est pas sur python3 sys.path .

> python3
Python 3.7.3 (v3.7.3:ef4ec6ed12, Jun 25 2019, 18:51:50)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/usr/lib/python3.7/site-packages']
>>>

donc, au lieu de simplement copier, j'ai (bash) lié la bibliothèque aux versions plus récentes.
Les futures mises à jour de l'application originale seront également appliquées automatiquement aux versions liées.

 if [ -d /usr/lib/python3/dist-packages/fail2ban ]
   then
      for d in /usr/lib/python3.*
      do
         [ -d ${d}/fail2ban ] || \
            ln -vs /usr/lib/python3/dist-packages/fail2ban ${d}/
      done
   fi

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