将用户定义的模块导入pydev

时间:2017-03-30 23:14:41

标签: pydev python-3.6 eclipse-neon

我是Eclipse neon + Pydev combo的初学者。 尝试使用我创建的其他模块创建的python模块。 首先,我将使用此处概述的TKinter教程: http://effbot.org/tkinterbook/tkinter-hello-again.htm

除了打印语句以响应鼠标点击之外,我想运行一个小模块,fibo.py

这是我的代码:

import the library
from tkinter import *

import fibo

class App:

    def __init__(self, master):

            frame = Frame(master)
            frame.pack()

            self.button = Button(
            frame, text="QUIT", fg="red", command=frame.quit
            )
            self.button.pack(side=LEFT)

            self.hi_there = Button(frame, text="Hello",command=self.say_hi)
            self.hi_there.pack(side=LEFT)

    def say_hi(self):
        fib(100)
        print ("hi there, everyone!")

root = Tk()

app = App(root)

root.mainloop()
root.destroy() # optional; see description below

这里的fibo.py

def fib(n):    # write Fibonacci series up to n
    a, b = 0, 1
    while b < n:
    print (b, end=" ")
    a, b = b, a+b

def fib2(n):   # return Fibonacci series up to n
    result = []
    a, b = 0, 1
    while b < n:
    result.append(b)
    a, b = b, a+b
    return result

两个模块都在同一个项目和工作区中。 编辑说,&#34;未解决的导入fibo&#34; 为什么模块fibo在pydev / eclipse中无法识别?

我的最终目标是在点击按钮时运行模块。如果有更直接的方法来实现这一点,我想知道。

1 个答案:

答案 0 :(得分:2)

好的,基于你的截图,你的结构实际上是:

/project (this is the PYTHONPATH root and marked as source folder)
/project/root
/project/root/__init__.py
/project/root/nested
/project/root/nested/__init__.py
/project/root/nested/example.py
/project/root/nested/fibo.py

在这种情况下,您的导入应为:from root.nested import fibo。您的代码可能在命令行中运行,但这是因为您仅在运行时向sys.path添加了一个条目(因此,PyDev无法遵循该条目)。

另一个选项是将example.py和fibo.py移动到/project

您也可以将相对导入用作from . import fibo,但是,要将模块作为__main__模块运行,您必须按模块名称运行模块(使用{ {1}}标志) - 您可以配置PyDev在-m

执行此操作

请注意,如果你只是写:

在您的情况下

preferences > PyDev > Run > Launch modules with "python -m mod.name",并等待显示未定义的变量错误,您可以在同一行中使用 Ctrl + 1 来获取将为您编写导入的建议(或者您可以执行代码完成,也会自动为您编写导入)。