【问题标题】:How to make alias for python script, similar to black?如何为python脚本制作别名,类似于黑色?
【发布时间】:2020-09-21 05:23:30
【问题描述】:

我想知道如何创建一个调用python脚本的入口点,类似于black
例如:
black my_script.py

假设我有一个名为 fix_newline.py 的 python 文件。

我不想在fix_newline.py 的目录中调用python fix_newline.py path/to/my_script.py,而是将名称fix_newline 分配给python path/to/fix_newline.py

最终目标是从我的目录树中的任何位置调用fix_newline,只要我在相同的环境中(例如~/.bash_profile)。

【问题讨论】:

标签: python python-3.x alias argv


【解决方案1】:

我相信我找到了一种方法,通过包装到 PyPI 来创建别名,正如 @Chris_Rands 和 @CharlesDuffy 提供的 link 所建议的那样:

setup(
    ...,
    entry_points={"console_scripts": ["realpython=reader.__main__:main"]},
)

setup.pysetup 中的 entry_point kwarg 函数应该是诀窍。

【讨论】:

    【解决方案2】:
    1. path/to 添加到您的PATH 变量.bash_profile。 (如果您有很多脚本,请考虑将它们安装在像~/bin/ 这样的固定位置,这样您就不会在您的PATH 中添加很多不必要的目录。

    2. 确保您的脚本是可执行的并且具有适当的 shebang。

    3. 从脚本名称中删除.py

    【讨论】:

    • 短期内可能没问题,但这感觉像是一条通往混乱包管理的道路
    • 您不需要完整的包管理。一种选择是简单地在 ~/bin/ 中创建一个符号链接,指向您的脚本所在的任何位置。
    • (我的回答是假设 OP 不想想要创建一个实际的包,而只是从某个工作目录运行脚本。)
    【解决方案3】:

    您也可以为此使用 Bash 别名:https://tldp.org/LDP/abs/html/aliases.html

    确保在您的机器上使用 python 的绝对路径和fix_newline.py

    alias fix_newline='/path/to/your/python /path/to/fix_newline.py'
    

    然后你可以使用:

    fix_newline file.txt
    

    如果您希望此别名永久有效,请确保将此配置放入您的 ~/.bashrc 文件中:https://tldp.org/LDP/abs/html/sample-bashrc.html

    【讨论】:

    • 请不要链接到 ABS——freenode #bash 频道的居民写了BashGuide,因为我们厌倦了需要教人们改掉他们在那里养成的坏习惯。还可以将 official manual 视为规范源,只要 bash 出现,它就会可靠地更新。
    • (另外,OP 想要模拟的blackpip 等根本不是别名)
    • ...这很重要,因为~/.bashrc 不是由非交互式 shell 运行的,所以如果您的编辑器或其他 C 可执行文件运行 shell 命令,它不会看到别名,所以它不会无法找到所需的工具。 (即使它确实读取.bashrc,别名在非交互式shell中默认关闭!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2014-09-24
    • 2017-02-22
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    相关资源
    最近更新 更多