运行 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
调用脚本。
我有一个 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
调用脚本。