问题标签 [relative-import]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何修复“ImportError:尝试在没有已知父包的情况下进行相对导入”
我使用 PyCharm,我正在尝试将一个类/模块从一个脚本导入另一个脚本。
我的两个脚本在同一个目录中:
脚本_A:
脚本_B:
但问题是,如果我运行 script_B 则会出现错误:
那么为什么这不起作用呢?为什么会出现错误?我该如何解决?
python - 使用 imp 时的相对导入,__init__.py 的行为不同
我正在使用python 3.7。使用时imp
,我注意到相对导入的工作方式不同,具体取决于相对导入发生的位置。
例如,我有以下目录:
和文件内容如下:
我imp.load_source
同时使用dir2/__init__.py
and dir2/b.py
,得到以下结果:
为什么与其他 python 文件imp.load_source
的行为不同?__init__.py
python - 来自同一目录的python相对导入无法按预期工作
我有以下目录结构:
从 withing sub1.py 我可以成功地导入 sub2 with:import pkg.sub2
或使用相对导入,from . import sub2
但我认为以下相对导入:import .sub2
应该也可以,但事实并非如此。我得到一个SyntaxError: invalid syntax
为什么这不起作用?
python - 从当前工作目录相对导入 python 模块
在当前工作目录中,我有以下结构
我想从 test1.py 调用 query_generator ,我尝试调用
但出现以下错误
这个问题可能与以下Importing files from different folder重复,Python relative-import script 上两层,Attempted relative import with no known parent package。但我无法解决我目前的问题
python-3.x - 是否可以解决相对进口的问题?
我在导入机制方面遇到了一些问题。例如,我有一棵这样的树:
第二个.py:
第一.py:
测试.py:
当我尝试运行时,出现test.py
此错误:
感觉好像second.py
不是在 中搜索my_package
,而是在my_pacakage
和所在的目录中搜索test.py
。这是一个奇怪的机制,因为如果我有一个现成的包,我不想在其中创建一些新文件,我想从另一个地方与之交互。
python - 如何使用 python 3.75 从子包到顶级文件夹工作目录的相对导入?
我正在尝试从test_smallcircle.py到a.py进行相对导入,如下所示
但它显示下一个错误
python - 如何在同一目录级别的另一个文件夹中相对导入脚本?
所以我想在同一目录级别的其他文件夹中导入脚本。
就像这样:
我想将一个类从基本文件导入物理文件。
编辑
我决定将这些文件重命名为 basic.py 和physics.py 并将它们放在同一个文件夹中,因此目录现在看起来像这样:
python - 显式相对导入的正确样板是什么?
在PEP 366 - Main module explicit relative imports中引入了模块范围变量__package__
以允许子模块中的显式相对导入,有以下摘录:
当主模块由其文件名指定时,该
__package__
属性将设置为None
. 为了在直接执行模块时允许相对导入,在第一个相对导入语句之前需要类似于以下的样板:请注意,只有当顶层包已经可以通过
sys.path
. 需要额外的操作代码sys.path
才能直接执行,而无需导入顶级包。这种方法也有与使用同级模块的绝对导入相同的缺点 - 如果脚本被移动到不同的包或子包,则需要手动更新样板。它的优点是,无论相对导入的数量如何,每个文件只需要进行一次更改。
我尝试在以下设置中使用此样板:
目录布局:
bar.py 子模块的内容:
当从文件系统执行子模块 bar.py 时样板工作(PYTHONPATH
修改使包 foo/ 可在 上访问sys.path
):
当从模块命名空间执行子模块 bar.py 时,样板也可以工作:
但是,以下替代样板在这两种情况下都与 bar.py 子模块的内容一样有效:
此外,这个替代样板更简单,并且当它与子模块 baz.py 一起移动到不同的包时不需要对子模块 bar.py 进行任何更新(因为它没有硬编码包名"foo"
)。
所以这是我关于 PEP 366 样板的问题:
- 第一个子表达式
__name__ == "__main__"
是必需的还是已经被第二个子表达式暗示了__package__ is None
? - 为了处理空字符串在哪里的情况(例如在通过提供包含目录从文件系统执行的子模块中:),不
__package__ is None
应该改为使用第二个子表达式吗?not __package__
__package__
__main__.py
PYTHONPATH=$(pwd) python3 foo/
python-3.x - Python 进口和芹菜工人
我有以下目录结构:
富/富.py
运行.py
任务.py
当我用它运行芹菜时,$ celery -A tasks worker
它给了我:
如果我只在tasks.py
我明白了ImportError: attempted relative import with no known parent package
我认为我的导入是错误的,但我无法理解 Python 如何处理导入。
python-3.x - 未找到模块且 __main__ 不是 python 导入中的包
我的 python 代码有以下文件夹结构,我正在使用 Python3。
在 test_driver.py 中,我已经导入了模块,如下所示
当我在 test_driver.py 中导入 sb_friver.py 时,出现以下错误。
我什至试过没有'。在模块前面。但我没有运气。