运行 poetry-installed python 优化模式脚本

Run poetry-installed python scripts in optimized mode

我有一个 pyproject.toml:

[tool.poetry.scripts]
# aka entry points or console scripts for setup.py users
merge = 'mypackage.__main__:main'

mypackage 包含一些 assert 语句,我不想​​ 运行 在生产中,但我想 运行 这些脚本在 "optimized" mode 中。

这可以用诗歌剧本来做吗?

当您使用控制台入口点安装包时,setuptools' 或 poetry 的安装程序只会在活动 python 解释器的 bin/ 中创建一个简单的可执行 shim . shim 决定将调用哪个 python 解释器来执行您的包的代码,并通过扩展决定调用哪些标志。

因此,首先您需要 运行 which merge 才能找出 shim 所在的位置。看起来应该和这个差不多,但是准确的样子很os-dependent:

#!/home/user/dev/merge/venv/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'mypackage','console_scripts','merge'
import re
import sys
...

现在只需将 -O 附加到 shebang,就大功告成了。我在 ubuntu 上对其进行了测试,它运行良好。


注意事项:

  • shebangs 只接受一个标志,所以你最好只需要这个
  • 你需要re-add每个单曲后的标志poetry install
  • 以类似的方式,你不能操纵你的 .wheel 来强制执行此操作,以防你想将其安装在远程的某个地方

与用户 运行 相关的 on my ill-thought-out feature request for Poetry, I should just be setting PYTHONOPTIMIZE=1 生产中的这些包,在功能上等同于使用 -O 调用脚本。