如何导入驻留在父目录中的模块(python文件)?
两个目录都有一个__init__.py文件,但我仍然无法从父目录导入文件?
在此文件夹布局中,脚本B正在尝试导入脚本A:
Folder A:
__init__.py
Script A:
Folder B:
__init__.py
Script B(attempting to import Script A)
Run Code Online (Sandbox Code Playgroud)
脚本B中的以下代码不起作用:
import ../scriptA.py # I get a compile error saying the "." is invalid
Run Code Online (Sandbox Code Playgroud) 这种导入工作正常,但在某些方面感觉很脏。主要是它使用 slice* 中的特定数字来获取父路径,并且它惹恼了 flake8 linter。
import os
import sys
sys.path.append(os.path.dirname(__file__)[:-5])
from codeHelpers import completion_message
Run Code Online (Sandbox Code Playgroud)
它位于一个看起来有点像这样的文件系统中:
parent_folder
__init__.py
codeHelpers.py
child_folder
this_file.py
Run Code Online (Sandbox Code Playgroud)
(child_folder实际上被称为week1,因此切片中的 5)
这个问题与Python 从父目录导入非常相似,但在这种情况下,讨论的重点是从终点运行测试是否合适。就我而言,我有一系列目录,其中的代码使用位于父级中的帮助程序。
上下文:每个目录都是一组每周练习,所以我想让它们尽可能简单。
有没有一种更干净、更Pythonic的方法来执行此导入?
@cco 解决了数字问题,但它仍然扰乱了 linter。