问题描述
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
和python 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"}