我实际上如何使用setuptools
和pbr
创建使用git repo标签进行版本控制的python软件包的发行版/发行版?
关于所需的基本设置和配置,有很多信息:
setuptools
and pbr
但是关于如何实际创建发行版的简单信息在哪里?
即我正在寻找任何找到带有版本信息的git标记并将其拉入配置信息的命令,以便可以分发具有该新版本信息的源,并且可以使用上述方法从脚本中找到版本信息在this answer中。
我正在开发一个项目,该项目只能通过git repo而不是通过 PyPi 分发给其他开发人员。该项目将使用pyinstaller
作为可执行文件发布给用户,因此此程序包分发仅用于一些关键目的:
pbr
从Git repo标签生成版本,因此这些标签可以成为我们进行版本控制的真实来源pbr
用于其他从Git自动生成的普通项目,例如作者,manifest.in文件,发行说明等。由于setuptools
文档致力于使用 PyPi 和pip
设置完全可分发和可重用的软件包,而pbr
文档仅真正告诉您如何修改setuptools
配置为使用pbr
,我找不到有关如何仅运行分发/发布过程的信息。
我确定它存在于文档中的某处,但是在几次错误的开始之后,我要问这里。在我看来,到处都有暗示,每个人要么知道如何做到这一点,要么就神奇地发生在过程中。
我只是想念明显的东西吗?
更新:
基于sinoroc的回答,看来我需要研究开发模式的安装。即开发该项目的任何人都将从git克隆,然后使用setuptools
开发安装模式进行安装。
这不是原始问题的直接一部分,而是暗含的,我相信同样情况下的人们也会对此感兴趣(我无法轻易找到的信息)。
他的回答中提供了有关更新某些元数据以及通过this setuptools
documentation link to working in "Development Mode"
答案 0 :(得分:1)
简而言之:
UPDATE t2
SET
salary = t1.TotalSalary
FROM
table2 AS t2
JOIN
(SELECT
id,
SUM(salary) as TotalSalary
FROM
table1
) AS t1
ON t1.id = t2.id;
python3 setup.py sdist
我实际上如何使用setuptools和pbr创建使用git repo标签进行版本控制的python软件包的发行版/发行版?
使用 setuptools 创建(源和转轮)Python软件包的常用命令是:python3 setup.py bdist_wheel
和python3 setup.py sdist
。然后可以默认在python3 setup.py bdist_wheel
目录中找到这些分布。
由于setuptools文档致力于通过PyPi和pip设置完全可分发和可重用的软件包,而pbr文档仅真正告诉您如何修改setuptools配置以使用pbr,因此我找不到有关如何仅运行pbr的信息。分发/发布过程。
setuptools 确实没有对此进行说明。它仅记录与dist
之间的差异,确实令人困惑。请参阅下面的实际文档...
但是关于如何实际创建发行版的简单信息在哪里?
更新
由于您不打算在诸如 PyPI 的索引上发布项目的发行版,而是打算使用 pyinstaller 进行发布,因此确实有可能忽略诸如distutils
和sdist
之类的 setuptools 命令。
在开发阶段您仍然可能想知道以下命令:
bdist_wheel
,python3 setup.py --version
之类的命令来确定setuptools(以您的情况为pbr)是否捕获了正确的信息。python3 setup.py --fullname
(或python3 setup.py develop
)在您的 site-packages 中放置一个指向您正在进行的工作的伪链接(pip install --editable .
)。这样,您的更改始终可以安装并导入。重要提示:请勿使用egg-link
,这会将当前版本复制到 site-packages ,并且较新的更改将无法导入。现在,我不知道一旦转到 pyinstaller ,这一切将如何工作。特别是因为您提到要从脚本中发现元信息(例如版本号)。使用 setuptools python3 setup.py install
的技术可能在 pyinstaller 上下文中有效或无效。
答案 1 :(得分:1)
这是我解决相同问题的方法,同时也阅读了几个不同的链接。
我创建了一个setup.py
文件,内容如下:
from setuptools import setup, find_packages
def readme():
with open('README.rst') as f:
return f.read()
def read_other_requirements(other_type):
with open(other_type+'-requirements.txt') as f:
return f.read()
setup(
setup_requires=read_other_requirements('setup'),
pbr=True,
packages=find_packages('src'),
package_dir={'': 'src'},
include_package_data=True,
zip_safe=True
)
我在./src
中有源代码。另外,我有一个setup-requirements.txt
,内容:
pip==18.1
pbr==5.1.1
setuptools==40.7.0
还有一个setup.cfg
,其中包含以下内容:
[metadata]
name = XXXXX
description = XXXXX
description-file = README.rst
home-page = https://github.com/XXXXX/XXXXX
因此,首先,安装安装要求:
pip install -r setup-requirements.txt
然后,只要您在本地具有在GitHub中标记的提交,就可以使用以下命令进行安装:
python setup.py install
,它将与带标签的版本一起安装。 您可以通过以下方法进行检查:
python setup.py --version