You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python ModuleNotFoundError:跨模块导入Tokens失败的原因与解决

模块导入错误原因及解决方法

错误原因

Python导入模块时,只会在sys.path列表的目录里查找模块。你运行script.py时,Python的搜索路径里没包含my_project目录,所以无法识别app1或my_project作为合法模块。

解决方法

方法1:代码内临时添加路径

在script.py最开头添加代码,手动把项目根目录加入搜索路径:

import sys
from pathlib import Path

# 获取my_project的绝对路径
project_root = Path(__file__).parent.parent.parent
sys.path.append(str(project_root))

# 正常导入
from app1.module import Tokens

说明:Path(__file__)是当前script.py的路径,连续三次.parent会定位到my_project目录。

方法2:设置环境变量PYTHONPATH

运行脚本前,把my_project的绝对路径添加到PYTHONPATH:

  • Linux/macOS终端:
    export PYTHONPATH="/实际路径/my_project:$PYTHONPATH"
    python app2/feature1/script.py
    
  • Windows命令行:
    set PYTHONPATH=C:\实际路径\my_project;%PYTHONPATH%
    python app2\feature1\script.py
    

设置后Python会自动搜索该目录,无需修改代码。

方法3:将项目安装为可编辑包(长期项目推荐)

在my_project目录下创建pyproject.toml文件,内容如下:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my_project"
version = "0.1.0"

然后在my_project目录执行:

pip install -e .

这样项目会以可编辑模式安装,之后无论在哪都能直接用from app1.module import Tokens导入。

方法4:相对导入(需以模块方式运行)

如果在my_project的上级目录,用模块方式启动脚本:

python -m my_project.app2.feature1.script

那么script.py里可以用相对导入:

from ...app1.module import Tokens

注意:这种方式不能直接运行script.py(如python script.py),必须用-m参数启动。

内容的提问来源于stack exchange,提问作者jiisanda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:03:14