2024-05-14 15:20:14 发布
网友
我有一个名为“class a”的Python类和另一个Python类,它应该导入“ClassB”的ClassA。目录结构如下:
MainDir ../Dir ..../DirA/ClassA ..../DirB/ClassB
我如何使用sys.path以便ClassB可以使用ClassA?
sys.path
你真的应该使用软件包。然后MainDir被放置在sys.path文件系统中的某个点上(例如…/site packages),然后您可以在ClassB中说:
from MainDir.Dir.DirA import ClassA # which is actually a module
您只需在每个目录中放置名为__init__.py的文件,就可以使其成为包层次结构。
__init__.py
作为问题“Python Import from parent directory”的字面回答:
要导入当前模块的父目录中的“mymodule”:
import os parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) os.sys.path.insert(0,parentdir) import mymodule
编辑 不幸的是,并非总是设置__file__属性。 获取parentdir的更安全的方法是通过inspect模块:
__file__
import inspect currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) parentdir = os.path.dirname(currentdir)
您可以使用relative import(来自link的示例,当前模块-A.B.C):
A.B.C
from . import D # Imports A.B.D from .. import E # Imports A.E from ..F import G # Imports A.F.G
你真的应该使用软件包。然后MainDir被放置在sys.path文件系统中的某个点上(例如…/site packages),然后您可以在ClassB中说:
您只需在每个目录中放置名为
__init__.py
的文件,就可以使其成为包层次结构。作为问题“Python Import from parent directory”的字面回答:
要导入当前模块的父目录中的“mymodule”:
编辑 不幸的是,并非总是设置
__file__
属性。 获取parentdir的更安全的方法是通过inspect模块:您可以使用relative import(来自link的示例,当前模块-
A.B.C
):相关问题 更多 >
编程相关推荐