使用setuptools构建Python源分发包时忽略git存储库

时间:2019-04-27 18:49:15

标签: python git setuptools

我正在尝试学习如何使用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 repo,其中包含这些文件以及上面树中的其他.py文件(我用来开发和测试软件包),甚至是Fortran源文件。另外,我的(Gentoo)系统除安装setuptools_scm之外,还安装了软件包setuptools

我花了几个小时才知道运行./setup.py sdist只会忽略我在setup.py中键入的任何配置(没有警告),即使我import setuptools而不是{{1} }。在setuptools_scm中,我尝试设置setuptools.setuppackages, package_dir, py_modules,但是这些都不起作用。是否有办法(除了通过强制卸载依赖软件包use_scm_version=False破坏系统之外)告诉setuptools_scm忽略我的git存储库,而不是自身? (我在setup.py中尝试过exclude *,但随后甚至排除了Manifest.in。)

1 个答案:

答案 0 :(得分:1)

我发现了一种解决方法,可以在setuptools_scm中禁用setup.py

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']
)