Файлы данных в 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.