stuff/
__init__.py
mylib.py
Foo/
__init__.py
main.py
foo/
__init__.py
script.py
script.py
想要导入 mylib.py
这只是一个示例,但实际上我只想在父目录中进行模块的相对导入。我已经尝试了各种方法并得到此错误…
Attempted relative import beyond toplevel package
我在某处读到该程序开始处的脚本不应该放在程序包中,并且我尝试像这样修改结构…
stuff/
mylib.py
foo.py // equivalent of main.py in above
foo/
__init__.py
script.py
但有同样的错误。
我该怎么做?这是否足够?
编辑:在Python 2
稍微摆弄一下之后,我意识到了如何设置它,并且出于特定性考虑,我将不使用foo bar名称。我的项目目录设置为…
tools/
core/
object_editor/
# files that need to use ntlib.py
editor.py # see example at bottom
__init__.py
state_editor/
# files that need to use ntlib.py
__init__.py
ntlib.py
__init__.py # core is the top level package
LICENSE
state_editor.py # equivalent to main.py for the state editor
object_editor.py # equivalent to main.py for the object editor
一条线object_editor.py
看起来像…
from core.object_editor import editor
一条线editor.py
看起来像…
from .. import ntlib
或者
from core import ntlib
关键是在我给问题的示例中,“主要”脚本是从程序包中运行的。一旦将其移出,创建了一个特定的程序包(core
),然后将我希望编辑者共享的库(ntlib
)移到该程序包中,一切就变得很笨拙了。
问题内容: 想象一下这个目录结构: 我正在编码,我需要从中导入一些东西。我该怎么办? 我尝试过,但是得到了“未打包的相对导入尝试”。 我四处搜寻,但只发现骇客。有没有一种干净的方法? 问题答案: 每个人似乎都想告诉你应该做什么,而不仅仅是回答问题。 问题是你通过将作为参数传递给解释器而将模块作为运行。 从PEP 328: 相对导入使用模块的属性来确定该模块在包层次结构中的位置。如果模块的名称不包含
问题内容: 假设我有以下文件, 现在,如果我跑步,它说。 这是有道理的,并且按照此链接中的以下语句运行: “它将首先在包的目录中查找” 假设我稍微修改了文件结构(添加了一个核心目录): 现在,如果我运行,它将加载内置模块。 同样在第二种情况下,如果必须遵守“ 它将首先在软件包的目录中查找 ” 这样 的语句 ,是否 应该加载本地文件,因为它是“软件包的目录”? 我的术语“包目录”的意义是 明确 的
问题内容: 大家好-我正在用Python中的相关知识来表达自己的观点。我已经阅读了30篇文档,并在SO和其他论坛上阅读了很多帖子-似乎还是行不通。 我的目录结构目前看起来像这样 我希望expander.py和language_id.py可以访问功能模块。我运行python main.py,可以从components.expander import 和components.language_id i
我有一个配置数据库存储在一个json文件中。该文件从磁盘读取,由Pythons json库解析,并存储在名为的变量中。 现在我正在研究jsonpath_rw以构建更可读的路径表达式,然后编写纯Python代码来访问多个嵌套的dict和数组。 这是我目前的代码: 第一个表达式列出所有UART设备序列号。结果显示在屏幕上并正在工作。关于在线文档,我可以通过访问打印匹配对象的完整路径。这是一个jsonp
问题内容: 在Python中使用相对导入有一个缺点,您将无法再独立运行模块,因为您将得到一个异常: 为了能够执行以下所有操作,我应该如何修改示例代码:和 我正在寻找适用于python 2.6+(包括3.x)的解决方案。 问题答案: 首先,我假设您意识到您编写的内容将导致循环导入问题,因为foo导入bar反之亦然;尝试添加 to test.py,您将看到它失败。必须更改示例才能正常工作。 因此,您要
问题内容: 我想从同一目录中的另一个文件导入函数。 有时它对我有用,但有时我得到: 有时它可与一起使用,但有时我也会得到: 我不了解这里的逻辑,也找不到任何解释。这看起来完全是随机的。 有人可以向我解释所有这些背后的逻辑是什么? 问题答案: 不幸的是,该模块需要位于程序包内部,有时还需要作为脚本运行。知道如何实现吗? 像这样的布局很普遍… … mymodule.py像这样… ......一个myo