在蜂件中使用自己的模块
Use own modules in beeware
我有一个蜜蜂项目,也想在其中使用我自己的模块,例如模型和控制器。另外,一个模块创建了一些我可以测试的对象。
但是当我想导入模块来创建测试对象并使用该方法时,它只是抛出一个错误:
ImportError: attempted relative import beyond top-level package
经过一些研究,我知道路径(目录)结构,我把我的模块放在哪里,包在哪里,很重要。但是无论我把模块放在哪里,它都有相同的(或有点像这样的)错误。但是我可以导入我的模型来创建这些 类 的对象。我也分不清公文包的起点在哪里
这里是我目前的结构:
/Project_Dir (own created)
/briefcase_project (created from briefcase)
/src
/Models (own created)
/app_directory (created from briefcase)
here is the __main__.py and the __init__.py (the start point I guess) and the app.py (where beeware code is, and also my module import from Test)
/Test (own created, here is a file with a method I want to call)
可悲的是,没有太多关于蜂软件的东西可以找到,所以我可以找到解决方案。
请帮忙。谢谢^^
我执行了以下操作来解决该问题。使用 Beeware Tutorial 2 source code is on Github
的示例
.
├── __init__.py
├── __main__.py
├── app.py
├── mylib <--- # my lib.
│ ├── __init__.py
│ └── testlib.py
└── resources
├── __init__.py
├── beewarecustomlibexample.icns
├── beewarecustomlibexample.ico
└── beewarecustomlibexample.png
2 directories, 9 files
mylib/testlib.py
def test(text: str) -> str:
return f"Hello: {text}"
在app.py
中:
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
from beewarecustomlibexample.mylib.testlib import test # Import custom lib
class BeewareCustomLibExample(toga.App):
def startup(self):
...
def say_hello(self, widget):
# Calling my test method
result = test(self.name_input.value)
self.main_window.info_dialog("Test Dialog", result)
def main():
return BeewareCustomLibExample()
以上是我如何让它工作的。我在 MacOS 上构建它并且运行良好。
取你的项目文件夹名称,然后从那里导入,所以如果你正在修改教程并且你已经在与你的 [=12= 相同的目录中设置了一个名为 myModule
的模块文件夹] 并且您有一个名为 file.py
的文件和一个名为 myClass
的 class,您可以键入:
from helloworld.myModule.file import myClass
我有一个蜜蜂项目,也想在其中使用我自己的模块,例如模型和控制器。另外,一个模块创建了一些我可以测试的对象。
但是当我想导入模块来创建测试对象并使用该方法时,它只是抛出一个错误:
ImportError: attempted relative import beyond top-level package
经过一些研究,我知道路径(目录)结构,我把我的模块放在哪里,包在哪里,很重要。但是无论我把模块放在哪里,它都有相同的(或有点像这样的)错误。但是我可以导入我的模型来创建这些 类 的对象。我也分不清公文包的起点在哪里
这里是我目前的结构:
/Project_Dir (own created)
/briefcase_project (created from briefcase)
/src
/Models (own created)
/app_directory (created from briefcase)
here is the __main__.py and the __init__.py (the start point I guess) and the app.py (where beeware code is, and also my module import from Test)
/Test (own created, here is a file with a method I want to call)
可悲的是,没有太多关于蜂软件的东西可以找到,所以我可以找到解决方案。
请帮忙。谢谢^^
我执行了以下操作来解决该问题。使用 Beeware Tutorial 2 source code is on Github
的示例.
├── __init__.py
├── __main__.py
├── app.py
├── mylib <--- # my lib.
│ ├── __init__.py
│ └── testlib.py
└── resources
├── __init__.py
├── beewarecustomlibexample.icns
├── beewarecustomlibexample.ico
└── beewarecustomlibexample.png
2 directories, 9 files
mylib/testlib.py
def test(text: str) -> str:
return f"Hello: {text}"
在app.py
中:
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
from beewarecustomlibexample.mylib.testlib import test # Import custom lib
class BeewareCustomLibExample(toga.App):
def startup(self):
...
def say_hello(self, widget):
# Calling my test method
result = test(self.name_input.value)
self.main_window.info_dialog("Test Dialog", result)
def main():
return BeewareCustomLibExample()
以上是我如何让它工作的。我在 MacOS 上构建它并且运行良好。
取你的项目文件夹名称,然后从那里导入,所以如果你正在修改教程并且你已经在与你的 [=12= 相同的目录中设置了一个名为 myModule
的模块文件夹] 并且您有一个名为 file.py
的文件和一个名为 myClass
的 class,您可以键入:
from helloworld.myModule.file import myClass