gpt4 book ai didi

Python:将 setup.py "scripts="迁移到 entry_points

转载 作者:太空狗 更新时间:2023-10-29 18:12:46 24 4
gpt4 key购买 nike

我想使用其他人的 python 实用程序,foobartools,它的 native 环境是 linux。 Foobartools 是纯 python,因此没有理由不能在我所在的 Windows 上使用它。

在他们的 setup.py 中,他们使用旧式 scripts=['bin/foobar'],

运行 pip install -e b:\code\foobar%pythonhome%\Scripts 中创建一个名为 foobar 的文件,但 Windows 不会即使 Scripts 在 PATH 中,也不知道它。要使用它,我需要创建一个 @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/foobarfoobartools 模块没有一个单独的可调用函数或类似bin 脚本对应的模块,bin 脚本相对复杂。

我想对项目进行尽可能少的更改,以便 a) 提交的补丁更有可能被上游接受,并且 b) 如果上游仍然不感兴趣,那么我需要做的工作就会减少以跟上它.

[更新] 现有的源代码树结构:

foobartools/
bin/foobar
foobartools/
__init__.py
foo/
__init__.py
one.py
two.py
bar/
...
baz/
...
setup.py

最佳答案

我得到了一个可以工作的 Scripts\foobar.exe,但它更改的代码比我希望的要多。我希望只对 setup.py 进行一些调整,或者至少在上游模块内部不会乱七八糟的东西。我不太了解它以确保我不会以某种方式妨碍。

(1) 移动 bin/foobar --> foobartools/foobar_cli.py
(2) 在setup.py中,注释掉#scripts=...,添加:

entry_points = {
'console_scripts': ['foobar = foobartools.foobar_cli:main'],
}

[later] 对相同核心思想的改进,意味着我将自己的肥脚放在主要业务领域之外:

(1) 移动./bin/foobar --> ./foobar_cli/foobar.py (注意扩展名和文件夹变化)
(2) 添加一个空的__init__.py到同一个文件夹
(3) console_scripts': ['foobar = foobar_cli.foorbar:main'],

关于Python:将 setup.py "scripts="迁移到 entry_points,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com