Python setuptools:包目录不存在
Posted
技术标签:
【中文标题】Python setuptools:包目录不存在【英文标题】:Python setuptools: package directory does not exist 【发布时间】:2021-01-20 05:34:28 【问题描述】:我有一个带有这个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 develop
和 python setup.py bdist-wheel
等其他命令也是如此。
我怀疑它与src
目录有关,正如setup.py
中的find_packages(where="./src")
调用中指定的那样。不过,我一直在关注documentation,它看起来确实在某个时候发现了my_pkg
模块。
为什么build_py
找不到?
【问题讨论】:
更改为packages=setuptools.find_packages(where="src", exclude=("tests",))
@SreeramTP 这没什么区别。
setuptools.setup( name="", version="0.0.1", author="", author_email="", description="", long_description=long_description, long_description_content_type="text/markdown", package_dir="": str("src"), classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], python_requires='>=3.8', )
你可以试试这个吗? @Carsten
添加package_dir
似乎确实可以解决问题。
【参考方案1】:
find_packages()
自动生成包名。也就是说,在您的情况下,它所做的只是生成['my_pkg']
。它实际上并没有告诉setup()
在哪里可以找到my_pkg
,只是它应该期望在某处找到一个名为my_pkg
的包。你必须单独告诉setup()
它应该在哪里寻找包。这是令人困惑和反直觉的吗?是的。无论如何,您可以使用package_dir
参数告诉setup()
在哪里可以找到my_pkg
。例如。
package_dir="":"src"
【讨论】:
嗨,有没有办法用setup.cfg
做到这一点?
setuptools.readthedocs.io/en/latest/userguide/…以上是关于Python setuptools:包目录不存在的主要内容,如果未能解决你的问题,请参考以下文章
Python 安装包setuptools easy_install pip
linux环境下的python安装过程(含setuptools)