Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

importer une classe situé dans un répertoire spécifique

9 réponses
Avatar
oxman
Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman

9 réponses

Avatar
Yermat
Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman


créer un fichier __init__.py dans mod/
Puis import mod.Test

--
Yermat

Avatar
bruno modulix
Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...


Non, en effet

Pouvez-vous m'aidez s'il vous plait ?


import sys
sys.path.append('./mod')
import Test

...à condition bien sûr que mod soit un sous répertoire du répertoire
courant lors de l'exécution... enfin bref, voila pour le principe, après
à toi d'adapter aux besoins.

HTH
Bruno

Avatar
bruno modulix

Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman



créer un fichier __init__.py dans mod/
Puis import mod.Test

Ceci fait de mod/ un package, ce qui n'est pas forcément le but de la

manoeuvre...


Avatar
oxman
On Thu, 24 Jun 2004 23:42:11 +0200, bruno modulix wrote:


Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman



créer un fichier __init__.py dans mod/
Puis import mod.Test

Ceci fait de mod/ un package, ce qui n'est pas forcément le but de la

manoeuvre...


Et bien en fait il me semble que ca me conviens mieux.
En effet le répertoire mod/ contiendras tout un tas de de "plugin" qui
seront donc chargé par un core.

Donc je pense que l'on peu dire que mod/ est le package qui contiens tous
les plugins. Si j'ai tout faux dites le moi ;)
Sinon je pars sur cette voix

En tout cas merci à vous deux.



Avatar
Yermat
oxman wrote:
On Thu, 24 Jun 2004 23:42:11 +0200, bruno modulix wrote:





Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman



créer un fichier __init__.py dans mod/
Puis import mod.Test



Ceci fait de mod/ un package, ce qui n'est pas forcément le but de la
manoeuvre...



Oui mais est-ce génant ? Et je sentais venir le coup des plugins
(surtout vu le nom du répertoire)...

Et bien en fait il me semble que ca me conviens mieux.
En effet le répertoire mod/ contiendras tout un tas de de "plugin" qui
seront donc chargé par un core.


Parfait !

Donc je pense que l'on peu dire que mod/ est le package qui contiens tous
les plugins. Si j'ai tout faux dites le moi ;)
Sinon je pars sur cette voix


Ca ira très bien et pourrait vous simplifier la vie par rapport à
l'autre solution (ajouter dans le sys.path).

En tout cas merci à vous deux.



--
De rien,
Yermat




Avatar
Bruno Desthuilliers
Yermat wrote:
oxman wrote:

On Thu, 24 Jun 2004 23:42:11 +0200, bruno modulix wrote:



Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman


créer un fichier __init__.py dans mod/
Puis import mod.Test


Ceci fait de mod/ un package, ce qui n'est pas forcément le but de la
manoeuvre...



Oui mais est-ce génant ?


Ca, c'est à l'OP d'en décider !-)

Je voulais juste attirer son attention (et celle d'autres lecteurs) sur
ce point.

Bruno





Avatar
Laurent
oxman wrote:

Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman


Salut,

Je pense que :

from mod.Test import Test1

serait mieux. Si le fichier Test.py dans le repertoire mod contient une
classe Test1.

De plus, il te faut un fichier __init__.py (meme vide) dans le repertoire
Test.

A plus,

Laurent.

Avatar
Rémi
Yermat wrote:

oxman wrote:
On Thu, 24 Jun 2004 23:42:11 +0200, bruno modulix wrote:





Salut,

Comment je peux faire pour importer une classe qui se situe dans le
répertoire mod/ ?

J'ai essayé : import mod/Test
mais ca ne marche pas...

Pouvez-vous m'aidez s'il vous plait ?

merci d'avance

oxman



créer un fichier __init__.py dans mod/
Puis import mod.Test



Ceci fait de mod/ un package, ce qui n'est pas forcément le but de la
manoeuvre...



Oui mais est-ce génant ? Et je sentais venir le coup des plugins
(surtout vu le nom du répertoire)...

Et bien en fait il me semble que ca me conviens mieux.
En effet le répertoire mod/ contiendras tout un tas de de "plugin" qui
seront donc chargé par un core.


Parfait !

Donc je pense que l'on peu dire que mod/ est le package qui contiens tous
les plugins. Si j'ai tout faux dites le moi ;)
Sinon je pars sur cette voix


Ca ira très bien et pourrait vous simplifier la vie par rapport à
l'autre solution (ajouter dans le sys.path).

En tout cas merci à vous deux.



Autrement pour le coup des plugins la fonction suivante

permet d'importer un fichier python avec son chemin.
Si quelqu'un a une solution plus simple je suis preneur.

def importModule(filename):
from sys import path
from os.path import abspath, split, splitext

modulePath = abspath(split(filename)[0])
moduleName = splitext(split(filename)[1])[0]

if not modulePath in path:
path.append (modulePath)

module = __import__(moduleName)
reload (module)
return module

Fonctionnement :
# Import d'un module
module = importModule("/mod/monModule.py")

# Instanciation
obj = module.MaClasse()

L'avantage de cette fonction, est que si vous utilisez py2exe,
vous pouvez importer des modules externes à l'exécutable,
même en cours d'exécution, et ainsi faire évoluer votre
application (plugins et autres) sans devoir regénerer un
nouvel exécutable...





Avatar
Yermat

Yermat wrote:


oxman wrote:

[...]
L'avantage de cette fonction, est que si vous utilisez py2exe,


vous pouvez importer des modules externes à l'exécutable,
même en cours d'exécution, et ainsi faire évoluer votre
application (plugins et autres) sans devoir regénerer un
nouvel exécutable...


Il y a de l'idée !

Mais même avec py2exe, il n'y a pas obligation que tous les modules
soient dans l'éxécutable... On peut très bien faire appel à des fichiers
python externe (ou plugins) de la même façon...

--
Yermat