You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过something/blah调用Poetry脚本入口?配置报错求助

Poetry脚本配置:解决something/blah调用入口点的问题

问题原因

直接用"something/blah"作为脚本名会报错,核心原因是操作系统不允许文件名包含斜杠——Poetry会尝试在虚拟环境的bin目录下创建something/blah这个可执行文件,但斜杠会被识别为目录分隔符,而something并不是已存在的目录,因此触发了"找不到文件或目录"的错误。

可行解决方法

方法1:用无斜杠命名替代(最简单)

把脚本名改成下划线或连字符形式,绕过文件名限制:

[tool.poetry.scripts]
something_blah = 'x.q.p:entrypoint'

之后直接运行something_blah就能调用目标入口点。

方法2:主命令加参数实现类似调用形式

如果想要保留类似something blah的调用逻辑,可以修改入口点函数支持参数,再配置主脚本:

[tool.poetry.scripts]
something = 'x.q.p:entrypoint'

然后在x.q.p模块的entrypoint函数里处理参数:

def entrypoint():
    import sys
    if len(sys.argv) > 1 and sys.argv[1] == "blah":
        # 执行原本的入口逻辑
        pass

之后运行something blah就能触发对应逻辑。

方法3:自定义shell包装脚本(严格匹配something/blah形式)

如果一定要用something/blah的调用路径,可以手动在虚拟环境中创建目录和脚本:

  1. 在虚拟环境bin目录下创建something子目录:
mkdir -p .venv/bin/something
  1. 在something目录下创建blah脚本,内容如下(替换为你的入口点路径):
#!/bin/bash
"$(dirname "$0")/../python" -m x.q.p
  1. 给脚本添加执行权限:
chmod +x .venv/bin/something/blah

之后就能运行something/blah调用入口点,不过这种方法需要手动维护,不如前两种便捷。

内容的提问来源于stack exchange,提问作者Andre Gagne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:02:03