Python - 结构模块突然丢失
Python - fabric module missing all of a sudden
我是 python 的新手,我正在试验 fabric 和 matplotlib 模块。
我已经使用 conda 创建了一个虚拟环境,并且正在编写程序并在虚拟环境中执行。
我编写了一个使用 fabric.api( a fabfile.py) 的脚本。我正在将此 fabfile 导入另一个 python 脚本 (Window.py) 并在 Window.py 中使用 fabfile 中的定义。一切正常,我很高兴。
现在我想在使用 Fabric 提取的一些数据上绘制图表。所以我进行了研究,发现 matplotlib 适合我的目的。我从虚拟环境中的 conda 安装了这个模块。所以令我惊讶的是,一旦我安装了这个和 运行 我的 Window.py,我得到了下面显示的错误!
**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**
这是我的代码示例,
Fabfile.py
from fabric.api import *
import sys
def hello():
print "hello world"
def connect(commandInput):
print "starting to connect"
env.host_string = 'nms@10.0.0.70'
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 = 'nms@10.0.0.70'
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)
当我 运行 fabfile 中的 defs 如下所示时,一切正常,
fab -a connect
但是当我从 Window.py 调用 Connect() 时,事情不像安装 matplotlib 之前那样工作
我在下面的 link 中看到一个问题与我在此处提出的问题最相似
我从这里接受的答案中得到了很多帮助,因为我现在不想使用 PIP,因为我的 windows 对 PIP 有一些依赖,但没有得到解决。我想使用 conda 本身。无论如何我可以解决这个问题吗?提前致谢
我会首先尝试仅导入模块所需的功能,以避免命名空间出现问题。
在您的 fabfile 中:
from fabric.api import env,hide,run
import sys
def hello():
print "hello world"
def connect(commandInput):
print "starting to connect"
env.host_string = 'nms@10.0.0.70'
env.password = "nms"
with hide('output','running'):
p=run(commandInput)
return p
在你的 Windows.py 中:
import Tkinter as tk
import csv
import MasterWindow
from fabfile import connect
import time
from fabric.api import env
LARGE_FONT= ("Verdana", 12)
env.host_string = 'nms@10.0.0.70'
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)
此外,请确保 运行 fabfile 和 Window.py 时的 PYTHONPATH
相同,因为 PYTHONPATH
是 Python 查找的位置要加载的模块。要检查它,请将此行放在文件的开头:
import sys
print("PYTHONPATH:{0}".format(sys.path))
我是 python 的新手,我正在试验 fabric 和 matplotlib 模块。 我已经使用 conda 创建了一个虚拟环境,并且正在编写程序并在虚拟环境中执行。
我编写了一个使用 fabric.api( a fabfile.py) 的脚本。我正在将此 fabfile 导入另一个 python 脚本 (Window.py) 并在 Window.py 中使用 fabfile 中的定义。一切正常,我很高兴。
现在我想在使用 Fabric 提取的一些数据上绘制图表。所以我进行了研究,发现 matplotlib 适合我的目的。我从虚拟环境中的 conda 安装了这个模块。所以令我惊讶的是,一旦我安装了这个和 运行 我的 Window.py,我得到了下面显示的错误!
**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**
这是我的代码示例,
Fabfile.py
from fabric.api import *
import sys
def hello():
print "hello world"
def connect(commandInput):
print "starting to connect"
env.host_string = 'nms@10.0.0.70'
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 = 'nms@10.0.0.70'
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)
当我 运行 fabfile 中的 defs 如下所示时,一切正常,
fab -a connect
但是当我从 Window.py 调用 Connect() 时,事情不像安装 matplotlib 之前那样工作
我在下面的 link 中看到一个问题与我在此处提出的问题最相似
我从这里接受的答案中得到了很多帮助,因为我现在不想使用 PIP,因为我的 windows 对 PIP 有一些依赖,但没有得到解决。我想使用 conda 本身。无论如何我可以解决这个问题吗?提前致谢
我会首先尝试仅导入模块所需的功能,以避免命名空间出现问题。
在您的 fabfile 中:
from fabric.api import env,hide,run
import sys
def hello():
print "hello world"
def connect(commandInput):
print "starting to connect"
env.host_string = 'nms@10.0.0.70'
env.password = "nms"
with hide('output','running'):
p=run(commandInput)
return p
在你的 Windows.py 中:
import Tkinter as tk
import csv
import MasterWindow
from fabfile import connect
import time
from fabric.api import env
LARGE_FONT= ("Verdana", 12)
env.host_string = 'nms@10.0.0.70'
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)
此外,请确保 运行 fabfile 和 Window.py 时的 PYTHONPATH
相同,因为 PYTHONPATH
是 Python 查找的位置要加载的模块。要检查它,请将此行放在文件的开头:
import sys
print("PYTHONPATH:{0}".format(sys.path))