请勿将entry_points安装为可执行文件

ron*_*akg 13 python bash pip setup.py

我正在尝试创建一个自己的包.包非常简单,它有一个python模块和一个bash脚本.我想把它们都安装好,/usr/local/bin以便它们可以直接执行.

这是我的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'],
)
Run Code Online (Sandbox Code Playgroud)

以下是输出的摘录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
Run Code Online (Sandbox Code Playgroud)

有了这个,我无法直接调用python或bash脚本.

有任何想法吗?

编辑:我运行pipUbuntu 16.04.1机器.只是尝试在Ubuntu 14.04机器上安装相同的包,行为是预期的.cloud_config.py并且deploy.sh都安装到了/usr/local/bin,我可以从系统的任何地方调用它们.

ron*_*akg 1

最后我让它工作了。我必须删除 apt 安装的 pip 软件包。

sudo apt remove python-pip
Run Code Online (Sandbox Code Playgroud)

然后根据其网站上的说明再次安装 pip - https://pip.pypa.io/en/stable/installing/

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
Run Code Online (Sandbox Code Playgroud)

看起来 Ubuntu 默认存储库中的 pip 与 pypi 分发的 pip 不同。