迁移setup.py到pyproject.toml后,pip安装aanalytics2仅生成dist-info致无法导入
问题原因及修复方案
核心问题:包源码未被正确识别
你的pyproject.toml里[tool.setuptools.packages.find]的where参数配置错误,导致setuptools找不到实际的包代码。
当前错误配置:
[tool.setuptools.packages.find] where = ["aanalytics2"]
你的pyproject.toml位于./aanalytics2/目录下,而包源码就在该目录下的aanalytics2/子文件夹里,所以where应该指向当前目录(.),而非子目录名。
其他需修正的配置项
package-data 包名占位符错误
配置里的mypkg是默认占位符,要替换成你的实际包名aanalytics2,才能正确包含pickle文件:[tool.setuptools.package-data] aanalytics2 = ["*.pickle"]移除多余的optional-dependencies配置
[project.optional-dependencies]下的dynamic = ["version"]完全多余,直接删掉——版本动态配置只需要在[project]下声明一次即可。license与classifiers不一致
你在[project]里声明的是Apache License 2.0,但classifiers里写的是GPLv3,建议统一成其中一个,避免混淆。依赖项优化
pathlib是Python 3.4+标准库,无需作为依赖声明;pytest是测试依赖,应该放到[project.optional-dependencies]的测试分组里,而非主依赖:[project.optional-dependencies] test = ["pytest"]
修正后的完整pyproject.toml示例
[build-system] requires = ["setuptools", "setuptools-scm"] build-backend = "setuptools.build_meta" [project] name = "aanalytics2" authors = [ {name = "Julien Piccini", email = "piccini.julien@gmail.com"}, ] description = "Adobe Analytics API 2.0 and 1.4 python wrapper" readme = "README.md" requires-python = ">=3.7" keywords = ["adobe", "analytics", "API", "python"] license = {text = "Apache License 2.0"} classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Information Analysis", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Development Status :: 4 - Beta" ] dependencies = [ 'pandas>=0.25.3', 'pathlib2; python_version < "3.4"', 'requests', 'PyJWT[crypto]', "dicttoxml", "openpyxl>2.6.0" ] dynamic = ["version"] [project.urls] homepage = "https://github.com/pitchmuc/adobe-analytics-api-2.0" changelog = "https://github.com/pitchmuc/adobe-analytics-api-2.0/blob/master/docs/releases.md" [tool.setuptools] include-package-data = true [tool.setuptools.packages.find] where = ["."] [tool.setuptools.package-data] aanalytics2 = ["*.pickle"] [project.optional-dependencies] test = ["pytest"]
验证修复效果
- 先卸载已安装的错误版本:
pip uninstall -y aanalytics2 - 在
pyproject.toml所在目录执行本地安装:pip install . - 检查
site-packages目录,现在应该同时存在aanalytics2/包文件夹和aanalytics2-0.3.4.dist-info/文件夹 - 测试导入:
python -c "import aanalytics2; print(aanalytics2.__version__)"
内容的提问来源于stack exchange,提问作者Pitchkrak
相关产品推荐
相关产品推荐

