Python pip未将入口点安装为可执行文件

Python pip未将入口点安装为可执行文件,python,bash,pip,setup.py,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={ 'c

我正在尝试创建一个我自己的包。这个包非常简单,它有一个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'],
)
下面是从
pip安装的输出中摘录…

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脚本

有什么想法吗

编辑:我正在
ubuntu16.04.1
机器上运行
pip
。刚刚尝试在一台
ubuntu14.04
机器上安装相同的软件包,其行为符合预期
cloud\u config.py
deploy.sh
都安装到
/usr/local/bin
上,我可以从系统的任何位置调用这两个文件。

尝试:

pip install --install-option="--prefix=$PREFIX_PATH" package_name
e、 g


我可以想到两个选择,首先,检查pip是否指向正确的位置。因此,请尝试:

which python
我的话是:

/usr/bin/python
你的将是不同的,相应地改变路径 然后确保路径设置正确,以便:

export PATH=/usr/bin/python:${PATH}
重新安装pip并重试。 否则,解决方法可能是在此实例中不使用pip,然后尝试:

python setup.py install
它将使用默认的python路径(不是pip),并应安装到:

/usr/local/bin 

我终于让它开始工作了。我不得不删除apt安装的pip包

sudo apt remove python-pip
然后根据他们网站上的说明再次安装pip-


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

console\u脚本不适用于旧版本的pip。PIP10.0.1太旧了。pip 19.0.3已经足够新了。

入口点->控制台脚本下的条目不应该安装在
路径中,这样它们就可以从任何地方调用吗?根据python打包文档-Ubuntu大量补丁pip;我并不奇怪他们在这里也改变了行为。这太荒谬了@MartijnPieters。如何创建一个在所有平台上都能正确安装的包?我刚刚尝试了基于
setup.py
创建一个包,并部署到clean Ubuntu 16.04 Vagrant box上-一切正常。如果你能提供更多的信息,这可能有助于重现这个问题。也许是有版本的?您使用哪个版本的setuptools进行装配?目标机器上的pip和setuptools是什么?我的也会说
/usr/bin/python
。看看下面我的答案,看看什么有效。我仍然不知道为什么默认pip不起作用。
sudo apt remove python-pip
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py