conda打包安装后无法按模块名导入自定义模块求助
问题分析与解决
你遇到的核心问题是项目结构不符合Python包规范,导致conda/pip无法正确识别myfuncondaproject作为可导入的模块。
当前结构的问题
你把setup.py和包核心文件(__init__.py、main.py)放在同一层级,这会让打包工具错误地将单个文件识别为可导入项,而非整个myfuncondaproject目录作为一个完整包。
修正步骤
1. 调整项目结构
将文件重新组织为标准Python包结构:
myfuncondaproject-project/ # 项目根目录(名称可自定义) ├── setup.py └── myfuncondaproject/ # 实际的Python包目录 ├── __init__.py └── main.py
2. 修正setup.py配置
确保setup.py正确指定要打包的包,示例配置如下:
from setuptools import setup, find_packages setup( name="myfuncondaproject", version="0.1.0", # 自动识别所有包含__init__.py的包目录,也可手动写packages=["myfuncondaproject"] packages=find_packages(), )
3. 重新安装包
进入项目根目录(包含setup.py的文件夹),执行以下命令重新安装:
# 开发模式安装(修改代码后无需重复安装) pip install -e . # 或用conda打包安装 conda build . conda install --use-local myfuncondaproject
4. 优化导入体验(可选)
如果想直接通过import myfuncondaproject调用print_hi,可在myfuncondaproject/__init__.py中添加:
from .main import print_hi
之后即可直接使用:
>>> import myfuncondaproject >>> myfuncondaproject.print_hi("Liam") Hi, Liam
验证
重新安装后,打开Python终端测试:
>>> import myfuncondaproject >>> from myfuncondaproject import main >>> main.print_hi("Liam") Hi, Liam
内容的提问来源于stack exchange,提问作者Liam Pieri
相关产品推荐
相关产品推荐

