Использование data_files в setuptools для установки двоичного файла для конкретной платформы с использованием маркеров среды - PullRequest
0 голосов
/ 06 мая 2019

Файлы данных в setup.cfg поддерживаются начиная с 40.5.0 , и хотя поддержка маркеров среды неясна, согласно проблема , PEP 508 является активный и описывает их. Со следующими строками в моем файле setup.cfg:

[options.data_files]
bin =
    bin/linux/mybin; platform_system=="Linux"
    bin/macos/mybin; platform_system=="Darwin"
    bin/win/mybin.exe; platform_system=="Windows"

И следующее дерево пакетов:

.
├── mypackage
│   └── __init__.py
├── MANIFEST.in
├── README.mkd
├── setup.cfg
└── setup.py
├── bin
    ├── linux
    │   └── mybin
    ├── macos
    │   └── mybin
    └── win
        └── mybin.exe

Моя цель состоит в том, чтобы просто предоставить по пути пользователя двоичный файл, который уже скомпилирован для 3 основных платформ (linux, mac, windows). Другие платформы не поддерживаются.

При запуске python setup.py install я получаю следующие последние строки:

running build_py
installing package data to build/bdist.linux-x86_64/egg
running install_data
error: can't copy 'bin/linux/mybin; platform_system=="Linux"': doesn't exist or not a regular file

Я пытался использовать setup.py вместо setup.cfg, получая ту же ошибку:

setup(
    data_files=[
        ('bin', [
            'bin/linux/mybin; platform_system=="Linux"',
            'bin/macos/mybin; platform_system=="Darwin"',
            'bin/win/mybin.exe; platform_system=="Windows"'
        ]),
    ]
)

Что мне не хватает?

Я нахожусь на linux / fedora 26, Python 3.6.6, Setuptools 41.0.1.

...