Python setuptools:包目录不存在

2024-04-10

我有一个与此相关的项目setup.py file:

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 develop and python setup.py bdist-wheel.

我怀疑这与src目录,如指定的find_packages(where="./src")调用setup.py。然而,我一直在关注文档 https://setuptools.readthedocs.io/en/latest/userguide/package_discovery.html,它看起来确实是my_pkg模块在某个时刻被发现。

为什么build_py找不到它?


find_packages()自动生成包名。也就是说,在你的情况下它所做的只是生成['my_pkg']。它实际上并没有告诉setup()在哪里可以找到my_pkg,只是它应该期望找到一个名为my_pkg某处。你必须单独告诉setup()它应该在哪里寻找包。这是否令人困惑且违反直觉?是的。无论如何,你可以告诉setup()在哪里可以找到my_pkg通过使用package_dir争论。例如。

package_dir={"":"src"}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python setuptools:包目录不存在 的相关文章

随机推荐