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

虚拟环境下跨子目录正确导入Python模块的方法(非sys.path方式)

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

虚拟环境本身用于隔离项目依赖,要解决你的导入报错,需将D_365目录转为可安装的Python包,结合虚拟环境实现无硬编码路径的模块导入,具体操作如下:

1. 调整目录结构,添加包标识文件

在D_365及其子目录下创建空的__init__.py文件(标记为Python包),同时在Repository根目录添加pyproject.toml配置文件,最终结构如下:

Repository/
├── pyproject.toml
└── D_365/
    ├── __init__.py
    ├── Code/
    │   ├── __init__.py
    │   ├── app.py
    │   └── functions/
    │       ├── __init__.py
    │       └── _00_P.py
    └── app_modules/
        ├── __init__.py
        └── test.py

2. 创建并激活虚拟环境

在Repository目录下执行对应系统的命令:

  • Windows(PowerShell):
    python -m venv .venv
    .\.venv\Scripts\Activate.ps1
    
  • Linux/macOS:
    python3 -m venv .venv
    source .venv/bin/activate
    

激活后命令行前缀会出现.venv,表示虚拟环境已生效。

3. 编写pyproject.toml配置

在Repository根目录的pyproject.toml中写入以下内容,定义包的基本信息:

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

[project]
name = "D_365"
version = "0.1.0"
packages = ["D_365"]

4. 以可编辑模式安装包

在激活的虚拟环境中执行命令,将D_365安装到虚拟环境(可编辑模式支持代码修改后即时生效):

pip install -e .

5. 修改test.py的导入语句

替换原来的相对导入,使用绝对导入即可正常导入模块:

from D_365.Code.functions import _00_P

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:42:18