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

Python环境配置:如何导入引用同目录文件的模块(无需修改代码)

Python模块跨目录导入问题解决

目录结构

/
├── package
│   ├── __init__.py
│   ├── mod1.py
│   └── mod2.py

模块内容

mod1.py

class MyClass(object):
    pass

mod2.py

from mod1 import MyClass

问题场景

在package/目录内运行Python时,可正常导入任意模块:

[package/] $ python
>>> import mod1
>>> import mod2
>>>

但在根目录/下导入mod2时会触发报错:

[/] $ python
>>> from package import mod1
>>> from package import mod2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/package/mod2.py", line 1, in <module>
    from mod1 import MyClass
ModuleNotFoundError: No module named 'mod1'
>>>

问题原因

当从根目录导入package.mod2时,Python的模块搜索路径(sys.path)默认包含根目录,但不包含package目录。mod2.py中使用的from mod1 import属于顶级绝对导入,Python会在sys.path的目录中查找mod1,而非package目录下的同目录模块,因此找不到目标文件。

解决方案(无需修改第三方代码)

方法1:临时配置PYTHONPATH环境变量

将package目录添加到Python的模块搜索路径中,在根目录执行对应系统的命令:

# Linux/macOS
export PYTHONPATH=$(pwd)/package:$PYTHONPATH

# Windows(PowerShell)
$env:PYTHONPATH = "$(Get-Location)\package;$env:PYTHONPATH"

配置完成后再运行Python,即可正常导入package.mod2。

方法2:通过启动脚本注入搜索路径

在根目录创建run.py脚本,手动将package目录加入sys.path:

import sys
import os

# 优先搜索package目录
sys.path.insert(0, os.path.abspath('./package'))

from package import mod2
# 编写后续业务逻辑

执行python run.py即可正常运行。

方法3:以开发模式安装包

如果第三方代码符合Python包规范,可通过开发模式安装让Python全局识别该包:

  1. 在根目录创建setup.py文件:
from setuptools import setup, find_packages

setup(
    name='package',
    version='0.1',
    packages=find_packages()
)
  1. 执行开发安装命令:
pip install -e .

安装后,无论在哪个目录运行Python,都能正常导入package.mod2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:48:15