Я пытаюсь создать собственный пакет. Пакет очень прост, он имеет один модуль python и один скрипт bash. Я решил, что оба они будут установлены под /usr/local/bin
, чтобы они могли быть выполнены непосредственно.pip не устанавливает entry_points как исполняемые файлы
Вот мой setup.py
файл:
from setuptools import setup
setup(
name='deploy',
.
.
.
install_requires=['pyyaml', 'cot', 'jsonschema'],
entry_points={
'console_scripts': [
'cloud_config = cloud_config:main',
],
},
scripts=['deploy.sh'],
)
Вот выдержка из выхода из pip install ...
:
running install_scripts
copying build/scripts-2.7/deploy.sh -> /usr/local/lib/python2.7.10/bin
changing mode of /usr/local/lib/python2.7.10/bin/deploy.sh to 755
Installing cloud_config script to /usr/local/lib/python2.7.10/bin
С этим, я не в состоянии вызвать либо питона или Баш скрипт непосредственно.
Любые идеи?
Редактировать: Я запускаю pip
на Ubuntu 16.04.1
машине. Просто попытался установить тот же пакет на машине Ubuntu 14.04
, и поведение будет таким, как ожидалось. cloud_config.py
и deploy.sh
оба устанавливаются на /usr/local/bin
, и я могу вызывать оба из любой точки системы.
Ubuntu сильно патчи, Я не удивлен, что они тоже изменили поведение. –
Это абсурд @MartijnPieters. Как можно создать пакет, который правильно устанавливается на всех платформах? – ronakg
Я только что попытался создать пакет на основе 'setup.py' и развернуть чистую Ubuntu 16.04 Vagrant box - все работает отлично.Если вы предоставите дополнительную информацию, это может помочь воспроизвести проблему. Может быть, что-то с версиями? Какую версию setuptools вы используете для сборки? Каковы настройки pip и setuptools на целевой машине? – Timur