Python setuptools:软件包目录不存在

问题描述

我有一个与此setup.py文件一起的项目:

import setuptools

with open("README.md","r") as fh:
    long_description = fh.read()

setuptools.setup(
    name="",version="0.0.1",author="",author_email="",description="",long_description=long_description,long_description_content_type="text/markdown",packages=setuptools.find_packages(where="./src",exclude=("./tests",)),classifiers=[
        "Programming Language :: Python :: 3","License :: OSI Approved :: MIT License","Operating System :: OS Independent",],python_requires='>=3.8',)

这是我的项目目录结构(前两个级别):

$ tree -L 2
.
├── README.md
├── setup.py
├── src
│   └── my_pkg
└── tests
    ├── conftest.py
    ├── data
    ├── __init__.py
    ├── integration
    ├── __pycache__
    └── unit

运行任何setuptools命令时,出现以下错误

$ python setup.py build
running build
running build_py
error: package directory 'my_pkg' does not exist

python setup.py developpython setup.py bdist-wheel之类的其他命令也是如此。

我怀疑它与src的{​​{1}}调用中指定的find_packages(where="./src")目录有关。但是,我一直在关注documentation,看起来确实在某个时候发现了setup.py模块。

为什么my_pkg找不到它?

解决方法

find_packages()自动生成软件包名称。也就是说,您的情况是生成['my_pkg']。它实际上并没有告诉setup()在哪里可以找到my_pkg,只是它应该期望在某个地方找到一个名为my_pkg的软件包。您必须单独告诉setup()应该在哪里寻找软件包。这是令人困惑和反直观的吗?是。无论如何,您可以使用setup()参数告诉my_pkg在哪里找到package_dir。例如。

package_dir={"":"src"}