我正在尝试安装我正在处理的本地Python项目:
pip install -e .
我正在尝试使用此处详细介绍的自动发现:https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#automatic-discovery
我的代码按照链接中所述的“临时”布局进行布局
project_root_directory
├── pyproject.toml # AND/OR setup.cfg, setup.py
├── ...
└── mypkg/
├── __init__.py
├── ...
├── module.py
├── subpkg1/
│ ├── __init__.py
│ ├── ...
│ └── module1.py
└── subpkg2/
├── __init__.py
├── ...
└── module2.py
我的顶级 setup.py:
from setuptools import setup,find_packages
setup(
name = "Code", #must match the actual folder name.
author = "Me",
author_email = "Me",
description = ("Code"),
packages=find_packages(where='mypkg'),
python_requires='>=3.6',
)
我不希望将一些子目录作为软件包的一部分,但我没有将
__init__.py
放入其中。
如果我不指定packages行,或者将“where”参数留空,则包会成功构建并可以导入,但除了默认的包函数之外,里面没有任何内容。如果我将其保留为上面代码中的样子,则会出现以下错误:
error: package directory 'subpkg1' does not exist
导致错误的子包目录确实存在于正确的位置,有自己的
__init__.py
,甚至不是目录中按字母顺序排列的第一个文件或文件夹。
有人知道会发生什么吗?我想对 pip 运行一个顶级调用来安装该包,并将其下面的所有子包安装为我可以点索引访问的子包。
解决方案:
添加
package_dir={"","mypkg"}
解决了问题,现在它可以自动查找模块。有趣的是,它似乎仍然无法自动完成选项卡,但可以通过 from mypkg.subpkg1 import module1
进行索引