Python 3 模块从另一个文件夹导入错误

贾姆希

文件夹结构:

  main
   |__ sub1
      |__ __init__.py
   |__ sub2
      |__ test.py

我需要在里面导入test.py

from .. sub1 import SomeClass

它显示此错误:

ValueError:尝试在顶级包之外进行相对导入。

感谢您的回复。

塞尔吉·巴列斯塔

这是从主源文件夹外部进行测试的特殊用例。main没有理由成为一个包裹,是否有理由不让它成为一个包裹。

恕我直言,最好的方法是从主目录开始测试。由于当前目录总是在sys.path,sub1将可以直接导入,这就足够了:

from sub1 import SomeClass

但是根据您的开发环境,您可能需要直接从 test 目录或 main 以外的任何目录启动测试。在这种情况下,我不确定这是否真的是最佳实践,我只将它用于我的测试,但一个简单的技巧是将测试文件夹的父文件夹添加到sys.path.

以下是可能的开始test.py

import os.path
import sys

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

from sub1 import SomeClass
...

接受它是什么:一个sys.path只允许从测试文件夹访问主源文件夹技巧。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python3将模块从文件夹导入到另一个文件夹

Python 3无法压缩文件夹并将其移动到另一个文件夹

从另一个文件夹导入 python 模块,主目录带有“-”

VSCode的Python linter认为从文件夹中另一个文件的导入是错误的

如何在Python 3中的另一个文件夹中打开Python 3程序

将文件从 S3 Bucket 传输到另一个保存文件夹结构 - python boto

从我的模块中的另一个文件夹在 python 中导入模块函数

如何从另一个文件夹中的文件导入python类?

从不是子文件夹的另一个文件夹导入python文件

从另一个文件夹导入 Python 包

Python3-从用户目录导入Linux中的另一个Python文件

使用Python 3从Jupyter Notebook中相对导入的另一个目录中的模块导入本地函数

Python导入模块在另一个文件中

Python将文件模块导入另一个

如何在一个文件夹中运行python程序以及如何从另一个文件夹导入和运行python程序

当您在另一个子文件夹中时,如何从子文件夹导入文件?(Python)

从模块中导入函数的Python导入错误(ModuleNotFoundError),该模块从另一个模块中导入类

如何在Django Settings.py中导入另一个Python 3文件?

有没有办法使用 Boto3 python 在 S3 中将具有特定文件扩展名的所有文件从一个文件夹移动到另一个文件夹?

如何导入和使用从自身中的另一个文件导入类的python模块?

如何从另一个 Python3 文件运行整个 Python3 文件?

使用python将文件复制到另一个文件夹

将 .txt 文件保存在 Python 中的另一个文件夹中

在Eclipse for Python项目中的另一个文件夹中调用文件

bat文件不在另一个使用Python的文件夹中时运行

Python - 查找重复文件并移动到另一个文件夹

如何使用os python获取另一个文件夹中文件的路径

如何在Python中打开另一个文件夹中的文件?

如何从Python文件夹读取并保存在另一个文件夹中