如何将httpie与httpieawsauthv4捆绑到Python zipapp中?

2024-06-09 03:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

httpie打包成Python“PYZ”(zipapp)很简单,例如使用

$ pip install --upgrade zapp
$ zapp httpie.pyz httpie.__main__:main httpie
$ python ./httpie.pyz --version
1.0.3

现在我尝试将httpie-aws-authv4作为httpie的插件,用于AWS身份验证。唉,httpie无法获取该插件

$ zapp httpie-aws4.pyz httpie.__main__:main httpie httpie-aws-authv4
$ python ./httpie-aws4.pyz       
usage: http [--json] [--form] [--pretty {all,colors,format,none}]
...   
            [--auth USER[:PASS]] [--auth-type {basic,digest}]

$ python ./httpie-aws4.pyz -A aws4 http://localhost:9200/
...
http: error: argument --auth-type/-A: invalid choice: u'aws4' (choose from 'basic', 'digest')

应该是[--auth-type {basic,digest,aws4}]

有人知道怎么做吗


Tags: 插件authawshttpbasicmaintypepyz
1条回答
网友
1楼 · 发布于 2024-06-09 03:27:12

作为记录,我通过向内置的身份验证机制列表注册扩展来解决插件加载问题。这使得插件可用且可操作,尽管是通过不同的机制实现的。对于zipapp,这是非常好的:

zapp httpie-aws4.pyz httpie.__main__:main httpie httpie-aws-authv4
mkdir -p httpie/plugins
unzip -q -c httpie-aws4.pyz httpie/plugins/__init__.py | gsed \
      -e '15i from httpie_aws_authv4 import AWSv4AuthPlugin # ADDED' \
      -e '19i AWSv4AuthPlugin, # ADDED' \
> httpie/plugins/__init__.py
zip httpie-aws4.pyz httpie/plugins/__init__.py

aws4身份验证机制会根据需要出现:

python ./httpie-aws4.pyz 2>&1 | grep auth-type
            [ auth USER[:PASS]] [ auth-type {aws4,basic,digest}]

相关问题 更多 >