Skip to main content

Python 到 Debian 源包转换实用程序,从 stdeb 分叉

项目描述

https://travis-ci.org/ashleysommer/stdeb3.png?branch=master

stdeb3 - Python 到 Debian 源代码包转换实用程序

这是stdeb的一个端口,具有现代化功能,例如在构建时删除 python2 支持,删除对低于 8 (jessie) (oldstable) 的 Debian 版本的支持,最低要求的 Debhelper 版本,较新的 dh-compat 版本和很多更多的。有关详细信息,请参阅 RELEASE_NOTES.txt。

stdeb3通过新的 distutils 命令 sdist_dsc从 Python 包生成 Debian 源包。为 Debian 软件包提供了自动默认值,但生成的软件包的许多方面都可以自定义(参见下面的自定义部分)。另一个命令bdist_deb创建一个 Debian 二进制包,一个 .deb 文件。install_deb命令安装此 .deb 文件。debianize命令直接在 setup.py 旁边构建一个 debian/目录。

还提供了几个便利实用程序:

  • pypi-download将查询Python 包索引 (PyPI)以获取包并下载它。

  • pypi-install将查询Python 包索引 (PyPI)中的包,下载它,从中创建一个 .deb,然后安装 .deb。

  • py2dsc会将 distutils 构建的源 tarball 转换为 Debian 源包。

  • py2dsc-deb会将 distutils 构建的源 tarball 转换为 Debian 源包,然后使用 Debian 机器从中构建 .deb 文件。

<nav class="contents" id="contents">

内容

</nav>

Python 3 支持

正如下面更详细的解释,stdeb 的核心是 sdist_dsc distutils 命令。此命令运行一次以生成 Debian 源代码包。这个 Debian 源包可以为 Python 2、Python 3 或两者指定构建包。这现在只能由 python3 解释器执行。默认情况下,只为正在使用的 Python 版本构建包。要覆盖它,请使用 --with-python2=True--with-python3=True作为 sdist_dsc distutils 命令的参数(或同时使用两者来确定)。例如,要使用 Python 3 解释器仅构建 Python 3 包:

python3 setup.py --command-packages=stdeb3.command bdist_deb

要使用 Python 3 解释器构建 Python 2 和 Python 3 包(并且只有 Python3 包安装脚本):

python3 setup.py --command-packages=stdeb3.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb

消息

  • 2019-01-31:版本 0.9.0。移植到 stdeb3。有关更改,请参阅 RELEASE_NOTES.txt。

  • 2015 年 2 月 18 日:版本 0.8.5。请参阅下载页面。错误修正:还原了在 virtualenv 中内置时安装到 virtualenv 中的更改。改进:添加 了 –allow-virtualenv-install-location以允许安装到 virtualenv 位置。支持 Debian Squeeze (6)、Debian Wheezy (7)、Ubuntu Precise (12.04)、Ubuntu Trusty (14.04) 和更高版本。

  • 2015-02-16:版本 0.8.4。请参阅下载页面。错误修正:再次适用于 Python 3.4(例如 Ubuntu Trusty)。改进:改进了 Python 3 的自定义(Dirk Thomas 添加了 force-x-python3-versionX-Python3-Version和 Louis 为 Recommends3Suggests3Provides3Replaces3 支持。支持 Debian Squeeze (6)、Debian Wheezy (7)、Ubuntu Precise (12.04)、Ubuntu Trusty (14.04) 及更高版本。

  • 2015-02-14:版本 0.8.3。请参阅下载页面。这是一个错误修复版本,它修复了 Unicode 支持的几个方面。测试通过了 Debian Squeeze (6)、Debian Wheezy (7) 和 Ubuntu Precise (12.04)。对 Python 3.4(例如 Ubuntu Trusty 14.04)的支持被错误地破坏并在 0.8.3 版本中得到修复。

  • 2014 年 8 月 14 日:版本 0.8.2。请参阅下载页面。这是一个错误修复版本,修复了一个严重问题,如果在某些情况下仅请求 Python 3 包,则会导致构建 Python 2 包。

  • 2014-8-10:版本 0.8.1。请参阅下载页面。由于 0.8.0 中的错误,此版本是 0.8 系列的第一个发布版本。自 0.7.1 以来的亮点:

    • 完全支持 Python 3。这包括从 Python 3 运行和为 Python 3 生成包。默认是在使用 Python 3 运行时构建 Python 3 包,在从 Python 2 运行时构建 Python 2 包。命令行选项可以是也用于为其他 Python 解释器构建包。

    • 为源包构建 .changes 文件。例如,虽然这仍然必须签名才能上传到 PPA,但在某些情况下它应该仍然有用。

    • 切换到 Debian 源格式 3.0(被子)。实际上,过去与源代码包一起提供的 .diff.gz 文件现在被 .debian.tar.gz 文件所取代。

    • 使用请求与 PyPI 交谈时验证 SSL 证书。(验证需要请求 >= 0.8.8。)

    • 许多错误修正。

  • 2014-05-05:版本 0.7.1。请参阅下载页面。此版本的亮点(您可能还希望查阅完整的变更日志)。由于 0.7.0 中的错误,此版本是 0.7 系列的第一个发布版本。自 0.6.0 以来的亮点:

    • 新命令:pypi-download 和 pypi-install 分别用于直接从 PyPI 下载和安装包。py2dsc-deb 直接从源 tarball 创建一个 .deb 文件。

    • 新的 distutils 命令: install_deb 让您可以直接将 python 包安装为标准系统包。

    • 许多错误修正,包括 PyPI 的新 URL。

    • 借助 Travis CI,自动运行测试套件

    • 感谢许多人,尤其是 Piotr Ożarowski 对 stdeb 的帮助。

  • 2010-06-18:版本 0.6.0。请参阅下载页面。此版本的亮点(您可能还希望查阅完整的变更日志):

    • 一个新的debianize命令,用于在 setup.py 文件旁边构建一个debian/目录。

    • Bug修复。

  • 2010-01-09:版本 0.5.1。错误修复版本。请参阅下载页面变更日志发行说明

  • 2009-12-30:版本 0.5.0。请参阅下载页面。此版本的亮点(您可能还希望查阅完整的变更日志):

    • 新的pypi-install脚本将自动从Python 包索引 (PyPI)下载、制作 .deb 并安装包。

    • 删除 setuptools 依赖项。

    • 新选项(-guess-conflicts-provides-replaces)查询原始 Debian 软件包的冲突/提供/替换信息。

    • 由于这些更改并修复了一些错误/缺陷,进行了一些小的向后不兼容的更改和弃用。请查看发行说明

  • 2009-12-28:版本 0.4.3 发布。请参阅下载页面。请参阅 变更日志发行说明

  • 2009-11-02:版本 0.4.2 发布。请参阅下载页面。请参阅 变更日志发行说明

  • 2009-10-04:版本 0.4.1 发布。请参阅下载页面。请参阅 变更日志发行说明

  • 2009-09-27:版本 0.4 发布。请参阅下载页面。此版本切换到 debhelper 7。请参阅0.4 的变更日志

0.3.2 及以下的版本与 Ubuntu Hardy 兼容。

命令

pypi-download,命令行命令

pypi-download获取一个包名,查询 PyPI 并下载它:

pypi-download [options] mypackage

pypi-install,命令行命令

pypi-install获取一个包名,查询 PyPI,下载它,构建一个 Debian 源包,然后从中构建 .deb,然后安装它:

pypi-install [options] mypackage

py2dsc,命令行命令

py2dsc获取一个 .tar.gz 源包并从中构建一个 Debian 源包:

py2dsc [options] mypackage-0.1.tar.gz # uses pre-built Python source package

py2dsc-deb,命令行命令

py2dsc-deb获取一个 .tar.gz 源包并构建一个 Debian 源包,然后从中构建一个 .deb 文件:

py2dsc-deb [options] mypackage-0.1.tar.gz # uses pre-built Python source package

sdist_dsc,distutils 命令

所有方法最终都会导致调用sdist_dsc distutils 命令。您可能更喜欢直接这样做:

python3 setup.py --command-packages=stdeb3.command sdist_dsc

Debian 源代码包是由未经修改的 Python 包生成的。以下文件在新创建的子目录deb_dist中生成:

  • 包名_版本名.orig.tar.gz

  • packagename_versionname-debianversion.dsc

  • packagename_versionname-debianversion.diff.gz

然后可以使用标准的 Debian 机器(例如 dpkg-buildpackage)将它们编译成二进制包。

bdist_deb,distutils 命令

安装了bdist_deb distutils 命令。这会调用 sdist_dsc 命令,然后在结果上运行 dpkg-buildpackage:

python3 setup.py --command-packages=stdeb3.command bdist_deb

install_deb, distutils 命令

install_deb distutils 命令调用 bdist_deb 命令,然后安装结果。您需要以超级用户权限运行它:

sudo python3 setup.py --command-packages=stdeb3.command install_deb

debianize, distutils 命令

debianize distutils 命令构建与上一个命令相同的debian / 目录,但输出直接放在项目的根文件夹中(与 setup.py 一起)。这对于直接定制 Debian 软件包很有用(而不是使用各种 stdeb 选项来调整生成的软件包)。

python3 setup.py --command-packages=stdeb3.command debianize

关于告诉 distutils 使用 stdeb distutils 命令的说明

Distutils 命令包也可以在 distutils 配置文件中指定(而不是使用setup.py的--command-packages 命令行参数),如distutils 文档中所述。具体来说,您可以将其包含在您的~/.pydistutils.cfg文件中:

[global]
command-packages: stdeb3.command

例子

这些都假设您在系统 Python 路径中安装了 stde3b。stdeb3 也适用于非系统 Python 路径(例如 virtualenv)。

快速入门 1:现在从 PyPI 安装一些东西,我不关心其他任何东西

从命令行执行此操作:

pypi-install mypackage

警告:尽管尽了最大努力,stdeb 绝对无法保证所有 Debian 软件包依赖项在没有人工干预的情况下都能正确完成。使用 pypi-install 会绕过您自定义 stdeb 行为的能力。阅读本文档的其余部分以了解如何制作更好的软件包。

快速入门 2:告诉我制作 .deb 的最快方法

(首先,像通常安装 Python 包一样安装 stdeb3。)

使用setup.py文件从目录中执行此操作:

python3 setup.py --command-packages=stdeb3.command bdist_deb

这将创建一个 Debian 源代码包(.dsc、.orig.tar.gz 和 .diff.gz 文件),然后将其编译为您当前系统的 Debian 二进制包 (.deb)。结果将在deb_dist中。

警告:在其他版本的 Ubuntu 或 Debian 上安装 .deb 文件而不是编译它的版本将导致未定义的行为。如果您有扩展模块,它们可能会损坏。即使没有扩展模块,也可能会发生坏事。

出于这个原因,最好为每个 Debian 或 Ubuntu 目标版本构建 Debian 源代码包,然后编译(例如使用Ubuntu 的 PPA )。

快速入门 3:我阅读了警告,所以请告诉我如何制作源代码包,然后编译它

这会生成一个源包:

wget http://pypi.python.org/packages/source/R/Reindent/Reindent-0.1.0.tar.gz
py2dsc Reindent-0.1.0.tar.gz

这将使用标准 Debian 工具将其转换为 .deb。( 在每个目标发行版的相同源包上执行此操作):

cd deb_dist/reindent-0.1.0/
dpkg-buildpackage -rfakeroot -uc -us

这将安装它:

cd ..
sudo dpkg -i python-reindent_0.1.0-1_all.deb

快速入门 4:从 Python 包直接安装到 debian 系统包

(首先,像通常安装 Python 包一样安装 stdeb。)

使用setup.py文件从目录中执行此操作:

python3 setup.py --command-packages=stdeb3.command install_deb

这将创建一个 Debian 源代码包(.dsc、.orig.tar.gz 和 .diff.gz 文件),将其编译为您当前系统的 Debian 二进制包 (.deb),然后使用dpkg安装它。

另一个例子,有更多解释

如果您没有 Python 源包(由python setup.py sdist生成的 .tar.gz 文件),则此示例更有用。为了说明起见,我们确实下载了这样一个 tarball,但立即解压它(或者,使用版本控制系统获取一个包的解压源):

wget http://pypi.python.org/packages/source/R/Reindent/Reindent-0.1.0.tar.gz
tar xzf Reindent-0.1.0.tar.gz
cd Reindent-0.1.0

下面将生成一个目录deb_dist,其中包含文件reindent_0.1.0-1.dscreindent_0.1.0.orig.tar.gzreindent_0.1.0-1.diff.gz,它们一起是一个 debian 源包:

python3 setup.py --command-packages=stdeb3.command sdist_dsc

以上述方式生成的源也被提取(使用 dpkg-source -x)并放置在deb_dist子目录中。继续上面的例子:

cd deb_dist/reindent-0.1.0
dpkg-buildpackage -rfakeroot -uc -us

最后就可以安装生成的包了:

cd ..
sudo dpkg -i python-reindent_0.1.0-1_all.deb

对于另一个使用示例,还有更多解释,请参阅 allmydata-tahoe ticket 251

下载

文件可在下载页面获得(对于旧版本,请参阅旧下载页面)。

git 存储库位于 http://github.com/astraw/stdeb

安装(或者,使用 stdeb 创建一个 stdeb 安装程序)

有趣的是,这里是使用 stdeb 安装 stdeb 的方法。注意 stdeb 也在 Debian 和 Ubuntu 中,所以这个秘籍只需要安装更新的 stdeb。

STDEB3_VERSION="0.9.0"

# Download stdeb3
wget http://pypi.python.org/packages/source/s/stdeb3/stdeb3-$STDEB3_VERSION.tar.gz

# Extract it
tar xzf stdeb3-$STDEB3_VERSION.tar.gz

# Enter extracted source package
cd stdeb3-$STDEB3_VERSION

# Build .deb (making use of stdeb package directory in sys.path).
python3 setup.py --command-packages=stdeb3.command bdist_deb

# Install it
sudo dpkg -i deb_dist/python-stdeb3_$STDEB3_VERSION-1_all.deb

背景

对于一般的 Python 包,它的源代码分发(使用python3 setup.py sdist创建的 python_package.tar.gz )几乎包含制作 Debian 源代码包所需的所有内容。这种近似等效的情况鼓励我编写这个 distutils 扩展,它执行 setup.py 文件以提取相关信息。可以选择使用setuptools 。

我最初写这个是为了 Debianize 我自己的几个 Python 包,但我觉得它通常很有用。至少在理论上,它看起来与easydebLogilab 的 Devtoolsbdist_dpkgbdist_debpkgme​​ 和dh-virtualenv相似。

特征

  • 为 python-support 支持的所有 Python 版本创建一个包。(使用XS-Python-Version: config 选项可以限制这个范围 。)

  • 将 Python 包名称自动转换为有效的 Debian 包名称。

  • 尝试自动转换版本号以保持顺序。另请参阅配置选项 Forced-Upstream-Version

  • 版本号的细粒度控制。( Debian-Version , Forced-Upstream-Version , Upstream-Version-Prefix , Upstream-Version-Suffix配置选项。)

  • 安装 .desktop 文件。(MIME-Desktop-Files配置选项。)

  • 安装 .mime 和 .sharedmimeinfo 文件。(MIME-FileShared-MIME-File配置选项。)

  • 安装版权文件。(版权文件配置选项。)

  • 将补丁应用于上游源。(Stdeb-Patch-File配置选项。)

  • 将环境变量传递给 setup.py 脚本。(Setup-Env-Vars 配置选项。)

定制生成的 Debian 源码包(配置选项)

stdeb 将尝试提供合理的默认值,但这些只是猜测。

有两种方法可以自定义 stdeb 生成的 Debian 源码包。首先,您可以为 distutils 命令提供选项。其次,您可以提供一个stdeb.cfg文件。

stdeb distutils 命令选项

sdist_dsc 命令采用 distutils 命令的命令行选项。例如:

python3 setup.py --command-packages=stdeb3.command sdist_dsc --debian-version 0MyName1

这将创建一个 Debian 软件包,其 Debian 版本设置为“0MyName1”。

这些选项也可以通过 distutils 配置文件进行设置。(这些是setup.cfg文件以及setup.py和 ~/.pydistutils.cfg 文件。)在这种情况下,将参数放在 [sdist_dsc]部分。例如,项目的~/.setup.cfg 文件可能包含以下内容:

[sdist_dsc]
debian-version: 0MyName1

要在调用 bdist_deb 时将这些命令传递给 sdist_dsc,请执行以下操作:

python3 setup.py sdist_dsc --debian-version 0MyName1 bdist_deb

命令行选项

影响

--with-python2

构建 Python 2 包(默认 = True)

--with-python3

构建 Python 3 包(默认值=False)

--no-python2-scripts

禁用 Python 2 脚本的安装(默认 = False)

--no-python3-scripts

禁用 Python 3 脚本的安装(默认值=False)

--force-x-python3-版本

使用 x-python3- 版本中的值覆盖默认的最小 python3:any 依赖项

--allow-virtualenv-安装位置

允许安装到 /some/random/virtualenv-path

--sign-results

使用 gpg 对生成的 .dsc 和 .changes 文件进行签名

--sign-key

使用此 gpg 密钥签名进行签名

--dist-dir (-d)

将最终构建的发行版放入的目录(默认='deb_dist')

--patch-already-applied (-a)

补丁已应用(在 py2dsc 调用 sdist_dsc 时使用)

--默认分布

已弃用(请参阅 –suite)

–套件(-z)

.cfg 中未指定时使用的分发名称(默认值='unstable')

--默认维护者

已弃用(请参阅–maintainer)

--维护者(-m)

如果 .cfg 中未指定,则使用的维护者名称和电子邮件(默认来自 setup.py)

--extra-cfg 文件 (-x)

附加 .cfg 文件(如果存在,除了 stdeb.cfg)

--补丁文件(-p)

在 setup.py 调用之前应用的补丁文件(与 .cfg 中指定的文件不兼容)

--补丁级别(-l)

在 setup.py 调用之前应用的补丁文件(与 .cfg 中指定的文件不兼容)

--patch-posix (-q)

使用 –posix 模式应用补丁

--remove-expanded-source-dir (-r)

删除扩展的源目录

–忽略安装要求(-i)

忽略 egg-info 目录中 requires.txt 的要求

–猜测冲突提供替换

如果为 True,尝试根据 apt-cache 输出猜测 debian/control 中的 Conflicts/Provides/Replaces。(默认=假)。

--使用-premade-distfile (-P)

使用 sdist 命令生成的 .zip 或 .tar.gz 文件

-资源

debian/control 源:(默认值:<source-debianized-setup-name>)

-包裹

debian/control 软件包:(默认值:python-<debianized-setup-name>)

-套房

变更日志中的套件(例如 stable、lucid)(默认值:不稳定)

--维护者

debian/control 维护者:(默认值:<setup-maintainer-or-author>)

--debian-版本

debian 版本(默认值:1)

-部分

debian/control 部分:(默认值:python)

-时代

版本时代

--强制上游版本

强制上游版本

--upstream-version-prefix

上游版本前缀

--upstream-version-suffix

上游版本后缀

–上传者

上传者

--版权文件

版权文件

–构建依赖

debian/control Build-Depends:

--构建冲突

debian/control 构建冲突:

–stdeb 补丁文件

包含要应用的 stdeb 补丁的文件

–stdeb 补丁级别

提供给补丁命令的补丁级别

-要看

debian/control 取决于:

– 建议

debian/control 建议:

——推荐

debian/control 推荐:

–xs-python 版本

debian/control XS-Python-版本:

–x-python3-版本

debian/control X-Python3-版本:

–dpkg-shlibdeps-参数

传递给 dpkg-shlibdeps 的参数

——冲突

debian/控制冲突:

– 提供

debian/control 提供:

--替换

debian/control 替换:

–mime 桌面文件

MIME 桌面文件

–mime 文件

MIME 文件

--shared-mime 文件

共享 MIME 文件

--setup-env-vars

传递给 setup.py 的环境变量

--udev-规则

包含要安装到 udev 的规则的文件

--with-dh-addons

采用逗号分隔的 debhelper 附加组件列表以包含在规则文件中

您还可以通过 distutils 选项为 stdeb.cfg 文件传递​​下面描述的任何参数。以这种方式传递参数(在命令行或 distutils .cfg 文件的[sdist_dsc]部分)将优先。选项名称应以小写形式给出。

stdeb.cfg 配置文件

您可以编写ConfigParser可以理解的格式的配置文件。在构建每个包时,stdeb 在 setup.py 目录中查找stdeb.cfg存在。您可以使用命令行选项 –extra-cfg-file 指定额外的配置文件。该部分应该是 [DEFAULT] 或 [package_name],其中 package_name 被指定为 setup() 命令的 name 参数。示例 stdeb.cfg 文件是:

[DEFAULT]
Depends: python3-numpy
XS-Python-Version: >= 2.7

所有可用选项:

配置文件选项

影响

资源

debian/control 源:(默认值:<source-debianized-setup-name>)

包裹

debian/control 软件包:(默认值:python-<debianized-setup-name>)

套房

变更日志中的套件(例如 stable、lucid)(默认值:不稳定)

维护者

debian/control 维护者:(默认值:<setup-maintainer-or-author>)

Debian 版本

debian 版本(默认值:1)

部分

debian/control 部分:(默认值:python)

时代

版本时代

强制上游版本

强制上游版本

上游版本前缀

上游版本前缀

上游版本后缀

上游版本后缀

上传者

debian/控制上传器

描述

覆盖默认自动生成的 debian/control 描述

详细描述

覆盖默认的 debian/control 长描述

主页

debian/control 主页:

版权文件

版权文件

变更日志

指定你自己的 debian/changelog 文件

新闻档案

用作 debian/NEWS 的文件

构建依赖

debian/control Build-Depends:

构建冲突

debian/control 构建冲突:

Stdeb 补丁文件

包含要应用的 stdeb 补丁的文件

Stdeb 补丁级别

提供给补丁命令的补丁级别

要看

debian/control 取决于:

取决于3

debian/control 取决于:对于 python3

建议

debian/control 建议:

建议3

debian/control 建议:对于python3

推荐

debian/control 推荐:

推荐3

debian/control 推荐:对于python3

XS-Python-版本

debian/control XS-Python-版本:

X-Python3-版本

debian/control X-Python3-版本:

Dpkg-Shlibdeps-参数

传递给 dpkg-shlibdeps 的参数

冲突

debian/控制冲突:

冲突3

debian/control 冲突:对于 python3

休息

debian/控制中断:

休息3

debian/control 中断:对于 python3

提供

debian/control 提供:

提供3

debian/control 提供:对于python3

替换

debian/control 替换:

替换3

debian/control 替换:对于 python3

MIME 桌面文件

MIME 桌面文件

MIME 文件

MIME 文件

共享 MIME 文件

共享 MIME 文件

设置环境变量

传递给 setup.py 的环境变量

Udev-规则

包含要安装到 udev 的规则的文件

stdeb.cfg 文件中的选项名称不区分大小写。

先决条件

  • Python 3.4+

  • 标准 Debian 实用程序,例如datedpkg-source和 Debhelper 9(如果您需要支持没有 dh9 的旧发行版,请使用 stdeb 0.8.x)

  • 如果您的 setup.py 使用 setuptools 功能setup_requiresinstall_requires,则必须在运行任何 stdeb 命令之前运行apt-file update 。

去做

  • 使输出符合Debian Python Policy规范或新的 python policy。这将包括几件事,其中包括:

    • 将项目提供的文档作为 -doc 包包含的能力

    • 将项目提供的示例、测试和数据作为单独的包包含的能力

    • 更多未列出

  • 创建(更好的)文档

  • 使用标准 distutils 机制的日志输出

  • 重构源代码以获得更简单、更理智的设计

执照

MIT 风格的许可证。版权所有 (c) 2006-2019 stdeb 作者。

有关完整的详细信息,请参阅随源分发提供的 LICENSE.txt 文件。

作者

额外学分

  • Zooko O'Whielacronx 用于 autofind-depends 补丁。

  • Brett(姓氏不详)用于 –ignore-install-requires 补丁。

  • Ximin Luo 修复错误。

  • Alexander D. Sedov 提供错误修复和建议。

  • Michele Mattioni 修复错误。

  • Alexander V. Nikolaev 用于 debhelper 构建系统规范。

  • Roland Sommer 的描述字段错误修复。

  • Barry Warsaw 建议使用 debianize 命令。

  • Asheesh Laroia 用于更新 PyPI URL。

  • Piotr Ożarowski 用于实现 dh_python2 支持。

  • Nikita Burtsev 用于 unicode 测试和修复

  • Mikołaj Siedlarek 修复错误

  • Dirk Thomas 为 –force-x-python3-version 和 X-Python3-Version

  • Louis 为 Recommends3、Suggests3、Provides3 和 Replaces3 提供支持

  • kzwin 与 virtualenv 互操作

  • 用于托管服务的GitHub 。

  • WebFaction(又名python-hosting)用于以前的托管服务。

  • TravisCI用于持续集成

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

stdeb3-0.9.0.post2.tar.gz (68.2 kB 查看哈希

已上传 source

内置分布

stdeb3-0.9.0.post2-py3-none-any.whl (51.5 kB 查看哈希

已上传 py3