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

时间:2017-02-11 23:59:43

标签: 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'],
)

以下摘录自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.pydeploy.sh都安装到/usr/local/bin,我可以从系统的任何位置调用它们。

4 个答案:

答案 0 :(得分:2)

我能想到的两个选项,首先,检查pip是否指向正确的位置。所以试试:

which python
我说:

/usr/bin/python

你的不同,相应地改变路径  然后确保PATH设置正确,所以:

export PATH=/usr/bin/python:${PATH}

重新安装pip然后重试。 如果做不到这一点,解决方法可能是在此实例中不使用pip并尝试:

python setup.py install

将使用您的默认python路径(而不是pip)并应安装到:

/usr/local/bin 

答案 1 :(得分:1)

最后我开始工作了。我不得不删除apt。

安装的pip包
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

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

function datum(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('Master');
    var getDatum = sheet.getRange("C4").getValue();
    var date = new Date(getDatum); // MM/DD/YYYY
    date.setDate(date.getDate()+1);
    var dateStr = date.getDay()+'/'+(date.getMonth()+1)+'/'+date.getFullYear();
    var setDatum = sheet.getRange("W3");
    setDatum.clear();
    setDatum.setValue(dateStr);
}

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

答案 2 :(得分:0)

尝试:

pip install --install-option="--prefix=$PREFIX_PATH" package_name

e.g。

pip install --install-option="--prefix=/usr/local/bin" pyFooBar

答案 3 :(得分:0)

save_probability不适用于旧版本的pip。点10.0.1太旧了。点19.0.3足够新。