在优化模式下运行诗歌安装的python脚本

时间:2020-11-06 04:03:17

标签: python assert python-poetry

我有一个pyproject.toml

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

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

这可能与诗歌脚本有关吗?

2 个答案:

答案 0 :(得分:1)

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

因此,首先您需要运行which merge才能找到垫片所在的位置。它看起来应该与此类似,但是确切的外观非常依赖于操作系统:

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

现在,只需将 -O附加到shebang,就可以完成。我在ubuntu上进行了测试,效果很好。


注意事项:

  • shebangs只接受一个标志,所以最好只用一个
  • 您需要在每个poetry install之后重新添加标志
  • 类似地,如果您想将其安装在远程位置,则无法安装.wheel来强制执行此操作

答案 1 :(得分:0)

与相关的on my ill-thought-out feature request for Poetry一样,我应该为在生产环境中运行这些软件包的用户设置PYTHONOPTIMIZE=1,其功能与使用-O调用脚本相同。