基于setup.py打包跨文件导入函数时报“No .egg-info directory found”错误
问题解决方法
报错原因
你当前使用的find_packages()默认会扫描项目根目录下的Python包,但你的所有可导入包都存放在src目录下,setuptools找不到合法的包结构,因此无法生成.egg-info元数据目录,触发报错。
解决步骤
- 第一步:修改
setup.py内容,指定src为包根目录,修改后完整代码如下:
from setuptools import setup, find_packages setup( name='example', version='0.1.0', packages=find_packages(where="src"), package_dir={"": "src"} )
- 第二步:确认
src下的两个子目录deep_learning、utils中都保留空的__init__.py文件,当前你的目录结构已经满足要求,无需额外修改。 - 第三步:回到项目根目录
MachineLearning,重新执行安装命令,如果遇到临时目录权限问题,可以追加--user参数:
pip install -e . # 若仍报错执行下方命令 # pip install -e . --user
- 第四步:测试导入,安装完成后在
dnn.py中直接使用下方语句即可调用目标函数:
from utils.preprocessing import train_test_split
补充说明
该配置不需要修改任何系统环境变量,其他用户克隆你的仓库后仅需同样在根目录执行一次pip install -e .即可正常使用所有跨包导入功能。
内容的提问来源于stack exchange,提问作者TechFlow
相关产品推荐
相关产品推荐

