如何将Python项目中session_10的file1.py导入到session_9的main.py中
Python跨文件夹模块导入解决方案
目录结构
python/ ├─ session_9/ │ └─ main.py └─ session_10/ └─ file1.py
你尝试的代码中的问题
- 导入语句错误:导入模块时不能加
.py后缀,正确的模块名是session_10.file1,而非session_10.file1.py。 sys.path.insert用法错误:该函数第一个参数是插入位置(比如0表示优先搜索),第二个才是路径;另外Windows路径中的反斜杠要转义为\\或者用原始字符串(r'路径'),避免转义字符解析问题。
可行的解决方法
方法一:动态添加父目录到模块搜索路径
在session_9/main.py中添加以下代码:
import sys from pathlib import Path # 获取当前脚本所在目录的父目录(即python文件夹路径) parent_path = Path(__file__).parent.parent sys.path.append(str(parent_path)) # 正常导入目标函数 from session_10.file1 import sampfunc as sp
方法二:通过IDE标记源根目录
如果你使用PyCharm、VS Code等IDE,右键点击python文件夹,选择Mark Directory as -> Sources Root,之后直接在main.py中写导入语句即可:
from session_10.file1 import sampfunc as sp
方法三:使用Python包结构(需创建__init__.py)
在python、session_9、session_10三个文件夹下各创建一个空的__init__.py文件,将整个结构转为Python包。
- 绝对导入(需确保python目录在sys.path中,或通过IDE标记源根):
from session_10.file1 import sampfunc as sp - 相对导入(仅当main.py作为包的一部分被导入时可用,不能直接运行main.py):
from ..session_10.file1 import sampfunc as sp
内容的提问来源于stack exchange,提问作者Joshua Ehd Silvio
相关产品推荐
相关产品推荐

