Python:移植设置.py“scripts=”到入口点

2024-09-29 22:19:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想利用其他人的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语法添加到设置.pypip将在Windows上自动创建Scripts\foobar.exe(我可以丢弃批处理文件)。在Linux上Scripts\foobar保持不变,每个人都很高兴。在

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

我不知道如何处理等式的右边,foobartools:main。如何打电话bin/foobar?foobartools模块没有一个与bin脚本对应的可调用函数或模块,bin脚本相对复杂。在

我想尽可能少地修改项目,这样a)提交的补丁有更好的机会被上游接受,b)如果上游仍然不感兴趣,我可以做更少的工作来跟上它。在

[update]现有的源树结构:

^{pr2}$

Tags: 模块文件脚本利用bin环境mainwindows
1条回答
网友
1楼 · 发布于 2024-09-29 22:19:38

我得到了一个有效的脚本\foobar.exe文件,但它改变的代码比我希望的要多。我只想通过一些调整设置.py,或者至少不会在上游模块内部造成混乱。我对这件事还不太了解,不知道怎么会不会碍事。在

(1)移动bin/foobar>;foobartools/foobar_cli.py
(2) 在设置.py,注释掉#scripts=...并添加:

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

[稍后]对同一个核心理念的精化,意味着我的肥脚不在主营业务领域:

{>
> (2) 将空的__init__.py添加到同一文件夹
(3) console_scripts': ['foobar = foobar_cli.foorbar:main'],

相关问题 更多 >

    热门问题