如何配置setup.py,以便它不会尝试覆盖已存在的脚本?或者,如果编写脚本失败,至少完成包安装的其余部分。我正在使用my setup.py的setuptools。 setup.py的相关部分是:
entry_points = {
'console_scripts' : [
'green = green:main', # <-- The one I have problems with
'green%d = green:main' % sys.version_info[:1], # green2 or green3
'green-%d.%d = green:main' % sys.version_info[:2], # green-3.4 etc.
],
},
my setup.py有两个版本化脚本(python版本包含在脚本名称中)和无版本脚本。在OS X上,我使用系统python for 2.7,这需要超级用户权限来运行pip(sudo pip ...),这会导致脚本安装在具有root所有权的/usr/local/bin
下。然后当我尝试通过带有用户权限的homebrew安装的python 3.4下安装时,它会尝试(并且失败)覆盖/usr/local/bin
中的无版本脚本。我不介意它不能覆盖脚本文件,我记得pip无法安装,并使半安装的软件包处于一个奇怪,时髦的状态。
我希望能够指示setup.py如果已经安装了其他内容,则不尝试安装脚本,或者至少忽略该错误并继续安装其余部分(如果它没有&# 39; t有权覆盖脚本。
答案 0 :(得分:0)
我不知道,如果标准setup
函数行为支持您的要求。
但我相信,可以这样做:
setup
可能的内容在致电setup
之前,请检查脚本是否已存在且您是否愿意重新安装或跳过。你使用的是Python脚本,因此掌握了完整的Python功能,用它来调查情况并做出决定。
调用setup
时,以这种方式构造entry_points
的值,它可以满足您的需要(安装或不安装脚本)。
无论如何,这有点困难,你需要做自己的分析,如果要安装的脚本已经存在,它在哪里,检查,是否要更新它等。
setup
询问您想要的内容,如果失败,请减少由于setup
是一个功能,您可以将它放入try
和except
,如果您知道,您可以在没有第一个脚本的情况下解决要求安装的问题,第二次尝试可能走这条路。