【问题标题】:Ignore git repository when building a Python source-distribution package with setuptools使用 setuptools 构建 Python 源代码分发包时忽略 git 存储库
【发布时间】:2019-09-16 22:10:34
【问题描述】:

我正在尝试学习如何使用 setuptools 创建 Python 源代码分发包。我以为我理解一个包是一个包含文件__init__.py 的目录,并且该包中的模块只是该目录中的 Python 源文件。因此,简化后,我的开发目录看起来像

.
├── newFile.py
├── OldCode
│   ├── testPackage2.py
│   └── testPackage.py
├── package
│   ├── __init__.py
│   ├── module1.py
│   └── module2.py
├── README.md
├── setup.py
├── test.f90
├── testPackage.py
└── .git/

package 包含我的包的模块。我的问题似乎出现了,因为我想发送 package/module1.pypackage/module1.py,但我也有一个 git 存储库,其中包含这些文件以及上面树中的其他 .py 文件(我用它来开发和测试包),甚至是 Fortran 源文件。另外,我的(Gentoo)系统除了setuptools外还安装了包setuptools_scm

我花了好几个小时才发现运行./setup.py sdist 会忽略我在setup.py 中输入的任何配置(没有警告),即使我是import setuptools,而不是setuptools_scm。在setuptools.setup 中,我尝试设置packages, package_dir, py_modulesuse_scm_version=False,但这些都不起作用。有没有办法(除了通过强制卸载依赖包setuptools_scm 来破坏我的系统)告诉setup.py 忽略我的git 存储库而不是它本身? (我在Manifest.in 中尝试了exclude *,但后来甚至排除了setup.py。)

【问题讨论】:

  • 我们能看到minimal reproducible example吗?只是一个小的存储库,我们可以使用或不使用setuptools_scm 进行克隆和测试...
  • @phd 感谢您的关心 - 这是我的example repo。一种解决方法是告诉setup.py 临时重命名.git/ - 请评论该行输入/输出。只有package/module[12].py 应该包含在 dist 文件中。

标签: python git setuptools


【解决方案1】:

我找到了在setup.py 中禁用setuptools_scm 的解决方法:

from setuptools_scm import integration
integration.find_files = lambda p: []

整个setup.py 现在看起来像:

#!/bin/env python3

from setuptools import setup

from setuptools_scm import integration
integration.find_files = lambda p: []

setup(
    name='Package',
    description='A Python package',
    author='AF',
    author_email='AF@mail.org',
    url='https://hitgub.org/AF/package',

    packages=['package'],

    version='0.0.1',
    license='GPL',
    keywords=['package']
)

【讨论】:

  • 这个问题很久以前就在github.com/pypa/setuptools_scm/issues/190 报告过,并以“不会修复”的解决方案关闭。 :-( 他们recommend 相同的修复。
  • 谢谢,这是一个比我更微妙的解决方法:-)
  • 这个方案的缺点是发布的包获取setuptools_scm作为依赖。
猜你喜欢
  • 2012-10-29
  • 2013-06-03
  • 2016-11-11
  • 1970-01-01
  • 2021-12-04
  • 2013-03-09
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多