0
votes

Importation de module Python contenant. et _

problème fort>: Je voudrais importer un module (nom: EX3.2_MYMODULE) dans un fichier (Nom: EX3.2_TEST.PY). Ils sont dans le même répertoire. Pour le faire, j'ai essayé plusieurs options (Capture d'écran) proposée dans plusieurs autres discussions sur ce sujet (c'est-à-dire Discussion 1 et Discussion 2 ). Aucun d'entre eux ne fonctionne.

capture d'écran: 1 a >:: https://i.stack.imgur.com/gnfqg.png

question strong>: Comment puis-je importer ce module sans modifier le nom du module? p>

strong>: p> EX3.2_TEST.PY P>

def helloWorld():
    print("Hello, World")


8 commentaires

Pourriez-vous s'il vous plaît fournir le code dans votre message et non dans la capture d'écran.


Qu'est-ce que "importer un module dans un fichier" signifie? Si vous voulez importer un module de un fichier, vous devrez modifier le nom du fichier ou utiliser le module ImportLIB . L'instruction import traite le . comme séparant un nom d'emballage à partir d'un nom de module contenu, pas dans le cadre d'un seul nom de module.


@Tjallo: Merci pour votre contribution!


@cheppner: Peut-être une question idiote, mais n'est pas ex3.2_test.py un fichier où j'importe le module?


Est-ce que cela répond à votre question? Comment importer un module Compte tenu du chemin complet?


@A_Guest Malheureusement pas. Vient de l'essayer


@Pewepow Pourquoi pas, quel est le problème avec cette réponse? Cela devrait fonctionner. Quelle version de Python utilisez-vous?


@a_Guest maintenant ça a fonctionné. Première fois qu'il n'a pas fonctionné à cause de complications avec le chemin. Merci pour ton aide! J'apprécie vraiment cela! Est-ce que ceci post un duplicata est-il maintenant? J'avais regardé le poste que vous avez porté auparavant (en fait, je l'ai lié dans ma question) mais je ne me suis pas réalisé que cela résoudrait mon problème car les sujets sont à première vue non identique.


3 Réponses :


2
votes

La situation est délicate, car les points signifient la structure de sous-vue en python. Jamais moins c'est toujours possible avec IMP:

import imp
mm = imp.load_source('mm', 'Ex3.2_myModule.py')

mm.helloWorld()


4 commentaires

Le IMP est obsolète depuis Python 3.4.


Malheureusement cela ne fonctionne pas pour moi. Où devrais-je poster l'erreur que cela me donne?


@Pewepow est-ce pour une sorte d'exercice (école)? (En raison de la nommée EX3.2) si oui, veuillez simplement changer le nom. S'ils vous donnent beaucoup de temps sur le changement de nom, expliquez-leur simplement qu'un point décimal des modules est destiné aux sous-capacités. Les utiliser dans votre nom de module sont INPROPROPER, et UNPYTHONIC, c'est une mauvaise pratique. Ils vous enseignent littéralement une mauvaise pratique, s'ils vous donnent du mal. Je sais que ce n'est pas la réponse à votre question. Mais je pense que c'est la réponse à votre problème! ;)


@tjallo tu as raison. C'est une mauvaise pratique et je changerai le nom du fichier. Cependant, j'aimerais toujours savoir s'il existe un moyen de le faire fonctionner avec le nom actuel. Je pourrais être un peu têtu que je dois admettre :)



0
votes

Le vol suivant de https://stackoverflow.com/a/43602557/5386938 fonctionne sur ma machine

def hello():
    print('Hello, World!')


0 commentaires

0
votes
import imp
with open('Ex3.2_myModule.py', 'rb') as fp:
    mm = imp.load_module('models_admin', fp, 'models.admin.py', ('.py', 'rb', imp.PY_SOURCE) )
mm.helloWorld()

0 commentaires