Je suis nouveau à python et j'expérimente avec des modules de tissu et matplotlib. J'ai créé un Env virtuel avec conda et je suis en train d'écrire des programmes et d'exécuter à l'intérieur de l'Env. J'ai écrit un script qui utilise fabric.api (un fabfile.py). J'importe ce fabfile dans un autre script python (Window.py) et en utilisant la définition dans fabfile dans Window.py. Tout fonctionne bien et je suis heureux.Python - module de tissu manquant tout à coup
Maintenant, je voulais tracer des graphiques sur certaines données que j'ai extrait en utilisant Fabric. J'ai donc fait une recherche et trouvé matplotlib était adapté à mon but. J'ai installé ce module à partir de conda à l'intérieur de l'Env. donc à ma grande surprise une fois que j'ai installé ceci et a couru mon Window.py, je reçois ceci ci-dessous montré Erreur!
**Traceback (most recent call last):
File "Window.py", line 9, in <module>
from fabfile import *
File "F:\home\WorkSpace\FIrstPyProject\TestModules\fabfile.py", line 2, in <module>
from fabric.api import *
ImportError: No module named fabric.api**
voici mes exemples de code,
Fabfile.py
from fabric.api import *
import sys
def hello():
print "hello world"
def connect(commandInput):
print "starting to connect"
env.host_string = '[email protected]'
env.password = "nms"
with hide('output','running'):
p=run(commandInput)
return p
Window.py
import Tkinter as tk
import csv
import MasterWindow
from fabfile import *
import time
from fabric.api import *
LARGE_FONT= ("Verdana", 12)
env.host_string = '[email protected]'
env.password = "nms"
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
label = tk.Label(self, text="Graphy-Home", font=LARGE_FONT)
label.pack(pady=10,padx=10)
Command = tk.Label(self, text="Enter Command")
pickCommand = tk.Entry(self)
pickCommand.pack(pady=10)
Command.pack()
button1 = tk.Button(self, text="Submit Command", command=lambda: submit())
button1.pack()
def submit(ItrCnt=0,sleepTime=3):
while (ItrCnt < 10):
print (pickCommand.get())
cmd=pickCommand.get()
ItrCnt=ItrCnt+1
time.sleep(sleepTime)
p=connect(cmd)
print(p.stdout)
quand je lance les defs à l'intérieur fabfile de la manière indiquée ci-dessous, les choses vont bien,
fab -a connect
mais quand je fais appel Connect() des choses Window.py ne fonctionnent pas comme avant l'installation de matplotlib
je vois une question plus semblable à celui que j'ai demandé ici dans ce lien ci-dessous
Je dint obtenir beaucoup d'aide de la réponse acceptée ici car je ne veux pas utiliser PIP maintenant car il y a une certaine dépendance sur mes fenêtres avec PIP qui n'est pas résolue. Je veux utiliser la conda elle-même. Y at-il de toute façon je peux contourner ce problème? merci d'avance
oui! cela a fonctionné mate! mais cela vous dérange-t-il d'expliquer pourquoi cela a fonctionné et est erroné en important tous les modules avec * dans la déclaration d'importation? –
Cela se produit lorsque des fonctions portant le même nom dans différents modules sont importées avec *. Si vous importez uniquement les fonctions dont vous avez besoin, il est moins probable que les noms se rencontrent. Une autre option consiste à importer uniquement le module, donc les fonctions auront le nom de module.function(), et ce sera unique. – charli