Python pip未将入口点安装为可执行文件
我正在尝试创建一个我自己的包。这个包非常简单,它有一个python模块和一个bash脚本。我希望它们都安装在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
/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