我想创建一个我自己的包。该包非常简单,它有一个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
有了这个,我不能够调用无论是Python或直接在bash脚本。
任何想法?
编辑:我正在运行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框 - 一切正常。如果您想提供更多信息,可能有助于重现问题。也许有版本的东西?你使用哪个版本的setuptools进行组装?目标机器上的pip和setuptools是什么? – Timur