Я хотел бы использовать чужую утилиту python, foobartools, родной средой которой является linux. Foobartools - чистый питон, поэтому нет причин, по которым он не может быть использован в Windows, где я есть.
В своем setup.py
они используют старый стиль scripts=['bin/foobar'],
.
Запуск pip install -e b:\code\foobar
создает файл foobar
в %pythonhome%\Scripts
, но Windows не знает об этом, даже если скрипты находятся в PATH. Чтобы использовать его, мне нужно сделать пакетный файл @python %pythonhome%\scripts\foobar
. Это работает, но не является оптимальным (например, обработка ctrl-c уродлива).
Я знаю, что если я добавлю новый и рекомендованный entry_points синтаксис для setup.py, то pip автоматически создаст Scripts\foobar.exe
в Windows (и я могу отбросить пакетный файл). В Linux Scripts\foobar
остается неизменным, и все довольны.
entry_points = {
'console_scripts': ['foobar = foobartools:main'],
}
Я не знаю, что делать с правой частью уравнения, foobartools:main
. Как сделать этот вызов bin/foobar
? Модуль foobartools не имеет ни одной вызываемой функции, либо модуль, подобный этому bin script, а бит script относительно сложный.
Я хочу сделать как можно меньше изменений для проекта, чтобы: а) у патч-представления было больше шансов получить одобрение вверх по течению, и б) если вверх по течению остается незаинтересованным, меньше работы для меня, чтобы идти в ногу с ним.
[обновление] Существующая структура древовидной структуры:
foobartools/
bin/foobar
foobartools/
__init__.py
foo/
__init__.py
one.py
two.py
bar/
...
baz/
...
setup.py