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

如何修改项目结构与setup.py实现from my_lib导入指定模块?

解决方案

问题核心是当前你的库安装后,module1和module2直接处于site-packages根目录,是顶级模块,没有被包裹在my_lib父包结构下,因此无法通过from my_lib import ...的方式导入。需要调整项目结构并配置包的导出逻辑:

1. 调整项目目录结构

将所有子模块和原根目录的__init__.py移动到一个名为my_lib的新目录下,最终结构如下:

└───my_lib
    ├───module1
    │   ├───__init__.py
    │   └───mod_1.py
    ├───module2
    │   ├───__init__.py
    │   └───mod_2.py
    └───__init__.py
setup.py

注意:原根目录下的__init__.py要移到my_lib目录内,根目录仅保留setup.py。

2. 配置my_lib/__init__.py

在my_lib目录的__init__.py中添加导入语句,将mod_1和mod_2暴露到my_lib的命名空间下,这样就能直接通过from my_lib import mod_1, mod_2导入:

# my_lib/__init__.py
from .module1 import mod_1
from .module2 import mod_2

如果需要直接导入模块内的具体类或函数,可改为:

from .module1.mod_1 import 目标类名/函数名
from .module2.mod_2 import 目标类名/函数名

3. 重新安装库

先卸载已安装的旧版本:

pip uninstall my_lib -y

再重新安装修改后的库:

pip install .

完成后,site-packages内的目录结构会变为:

.\Python\Python312\Lib\site-packages
└───my_lib
    ├───module1
    │   ├───__pycache__
    │   ├───__init__.py
    │   └───mod_1.py
    ├───module2
    │   ├───__pycache__
    │   ├───__init__.py
    │   └───mod_2.py
    └───__init__.py
└───my_lib-1.0.0.dist-info
    ├───direct_url.json
    ├───INSTALLER
    ├───METADATA
    ├───RECORD
    ├───REQUESTED
    ├───top_level.txt
    └───WHEEL

此时就能正常使用from my_lib import mod_1, mod_2语句导入模块了。

内容的提问来源于stack exchange,提问作者Gооd_Mаn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:00:04