【发布时间】:2015-08-11 16:25:18
【问题描述】:
我想使用别人的python实用程序foobartools,它的原生环境是linux。 Foobartools 是纯 python,所以没有理由不能在我所在的 Windows 上使用它。
在他们的setup.py 中,他们使用的是旧式scripts=['bin/foobar'],。
运行pip install -e b:\code\foobar 会在%pythonhome%\Scripts 中创建一个名为foobar 的文件,但是即使脚本在PATH 中,Windows 也不知道它。要使用它,我需要制作一个@python %pythonhome%\scripts\foobar 批处理文件。这可行,但不是最佳的(例如,ctrl-c 处理很丑陋)。
我知道,如果我将更新的和推荐的 entry_points 语法添加到 setup.py,pip 将在 Windows 上自动创建 Scripts\foobar.exe(我可以放弃批处理文件)。在 Linux 上Scripts\foobar 保持不变,每个人都很高兴。
entry_points = {
'console_scripts': ['foobar = foobartools:main'],
}
我不知道如何处理等式的右侧,foobartools:main。如何拨打电话bin/foobar? foobartools 模块没有一个单独的可调用函数或模块,如 bin 脚本对应,bin 脚本相对复杂。
我想对项目进行尽可能少的更改,以便 a) 提交的补丁更有可能被上游接受,并且 b) 如果上游仍然不感兴趣,我可以做更少的工作来跟上它.
[更新]现有的源码树结构:
foobartools/
bin/foobar
foobartools/
__init__.py
foo/
__init__.py
one.py
two.py
bar/
...
baz/
...
setup.py
【问题讨论】: