python - 如何判断 setup() 是否正在读取 setup.cfg?
问题描述
我得到了一个使用pyscaffold生成的 Python 项目,我在根目录setup.py
和setup.cfg
. 我修改了setup.cfg
文件,在元数据部分下添加了一行version=1.0.0
。
但是,运行python setup.py develop
或python setup.py sdist
我在输出中看到工件名称没有我在setup.cfg
. 我看到以下内容:
Installed c:\users\SkyWalker\code\my_project\src
Processing dependencies for my_project==0.0.post0.dev1+g8386a10.dirty
Finished processing dependencies for my_project==0.0.post0.dev1+g8386a10.dirty
分发工件有这个0.0.post0.dev1+g8386a10.dirty
版本,我不知道它是从哪里得到的。如何判断是否python.cfg
已阅读?
生成的 pyscaffoldsetup.py
如下所示:
# -*- coding: utf-8 -*-
"""
Setup file for aqm_database_api.
Use setup.cfg to configure your project.
This file was generated with PyScaffold 3.2.3.
PyScaffold helps you to put up the scaffold of your new Python project.
Learn more under: https://pyscaffold.org/
"""
import sys
from pkg_resources import VersionConflict, require
from setuptools import setup
try:
require('setuptools>=37.0')
except VersionConflict:
print("Error: version of setuptools is too old (<37.0)!")
sys.exit(1)
if __name__ == "__main__":
setup(use_pyscaffold=True)
所以它没有setup.cfg
显式加载,而且require('setuptools>=37.0')
每次都失败,无论版本值是什么。
解决方案
PyScaffold 配置setuptools
为使用setuptools_scm
. 这意味着,为了更改项目的版本,您需要使用 git 来标记您的项目。这在https://pyscaffold.org/en/v3.3.x/features.html#versioning-and-git-integration中有简要描述。
我想这就是为什么更改setup.cfg
不会更改创建的发行版版本的原因。先验setuptools
应始终阅读setup.cfg
。
为了确保setuptools
阅读setup.cfg
您可以做的一项实验,您可以:
- 确保删除
*.egg-info
项目根目录内或文件夹内的任何文件src
夹(以确保您看不到缓存版本)。 - 更改
setup.cfg
文件中的作者之类的简单内容 - 像往常一样构建你的包(
python setup.py bdist_wheel
例如) <your-project>.egg-info
在项目的根目录或目录中查找生成的新文件夹src
。阅读PKG-INFO
那里。您应该能够看到证明setuptools
正在阅读的更改setup.cfg
(否则最好的选择应该是打开票证/问题setuptools
)
推荐阅读
- api - Tumblr API 返回错误代码 1016
- ruby-on-rails - 在 Ruby on rails 应用程序中启用 https ssl
- php - PHP While循环不起作用但没有错误
- java - “不能从静态上下文引用非静态方法”但没有静态变量或方法
- python - how to make django HttpResponse return faster than 1 second
- java - 如果位数和字节数只是翻倍,为什么数据量之间会有如此巨大的差异?
- linux - 是否可以为 perl 模块导入 truetype 字体?
- python - 为用户添加徽章以在 django 中执行任务
- python - 在 Python 中使用 if 条件加速逐行循环
- javascript - 日期对象更改