Игнорировать репозиторий git при сборке дистрибутива исходного кода Python с помощью setuptools - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь узнать, как создать пакет исходного кода Python с помощью setuptools. Я думал, что понял, что пакет - это каталог, содержащий файл __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.py и package/module1.py, но у меня также есть git-репо, которое содержит эти файлы, а также другие файлы .py в дереве выше (которое я использую для разработки и тестирования пакет), и даже исходный файл Fortran. Кроме того, в моей (Gentoo) системе установлен пакет setuptools_scm в дополнение к setuptools.

Мне потребовалось несколько часов, чтобы выяснить, что при запуске ./setup.py sdist будет просто игнорироваться любая конфигурация, которую я ввожу в setup.py (без предупреждения), даже если я import setuptools, а не setuptools_scm. В setuptools.setup я попытался установить packages, package_dir, py_modules и use_scm_version=False, но ни один из них не сработал. Есть ли способ (кроме взлома моей системы принудительным удалением пакета зависимостей setuptools_scm) сказать setup.py игнорировать мой репозиторий git, а не себя? (Я пробовал exclude * в Manifest.in, но тогда даже setup.py исключается.)

1 Ответ

1 голос
/ 28 апреля 2019

Я нашел обходной путь для отключения 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']
)
...