从另一个目录导入模块时出现 Python 错误

菜鸟

我看过很多stackoverflow帖子,但我不明白为什么我会遇到这个问题

我的文件系统

parent_folder
    |folder1
        |module1.py
        |module2.py
        |__init__.py
    |folder2
        |main.py

我想将 module1.py 和 module2.py 导入 main.py。

我的 __init__.py 文件具有以下内容

__all__=['module1','module2']

这是我在 main.py 中尝试的内容

from ..folder1 import *

但这给了我这个错误:

Traceback (most recent call last):
File "main.py", line 2, in <module>
from ..folder1 import *
SystemError: Parent module '' not loaded, cannot perform relative import

我一直试图解决这个问题一个小时,但没有任何效果。请帮忙。


编辑:我通过使用绝对路径解决了这个问题(没有其他工作)

尼基尔·鲁帕纳瓦尔

相对导入适用于您的包。当您python main.py简单地运行时,它无法找到当前包

考虑到父文件夹的路径是 /path/up/to/parent_folder

执行

python -m parent_folder.folder2.main from /path/up/to   

要么

设置PYTHONPATH设置sys.path/path/up/to/parent_folder,然后将导入更改为以下

from folder2 import *

并执行 python main.py

更新

相对导入用例之一是package在包外使用您的脚本。该脚本通常充当入口点或可执行文件。

以下是一个示例目录结构

myapp
│   entry.py
│
└───package
    │   __init__.py
    │   __init__.pyc
    │
    ├───folder1
    │       module1.py
    │       __init__.py
    │
    └───folder2
            start.py
            __init__.py

我的应用程序/entry.py:

import sys
from package.folder2 import start

if __name__ == '__main__':
    sys.exit(start.main())

myapp/folder2/start.py:

import sys
from ..folder1.module1 import * 
# this is relative import to "package". 
# Use?: It will avoid confusion and conflicts with other packages in your syspath. Improve readability at some extent,

def main():
    print "do something with folder1.module1 imported objects"

$ python entry.py

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

从另一个目录导入文件时出现导入错误

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

将python模块导入另一个目录

为什么不能导入而不会出现有关另一个python文件的错误?(“部分初始化的模块没有属性”)

另一个Python相对导入错误

在另一个函数中使用创建的类时出现Python错误

从子目录导入模块时出现Python错误

通过子过程从另一个python脚本调用python脚本时导入错误的包

使用 Python 将文件从一个目录移动到另一个目录时无法解决错误

从另一个容器内的python客户端在容器内调用服务时出现连接错误

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

如何从另一个目录导入具有相对路径的 Python 模块?

将输出变量从一个模块传递到另一个模块时出现Terraform错误

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

使用Python Imaging Library将一个图像粘贴到另一个图像时出现“ ValueError:错误的透明蒙版”?

Verilog-尝试复制另一个模块的输出时出现不匹配错误

尝试将一个模块导入另一个模块时,Python生成SystemError

从另一个模块导入的 Python 脚本

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

从另一个包导入python模块

Python将文件模块导入另一个

如何从另一个目录导入python包?

从另一个目录导入类-Python

无法从另一个目录导入python类

如何从另一个目录导入python类

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

导入模块本身在 Python 中导入另一个模块时遇到问题

从另一个python文件导入函数时出现问题