首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何冻结Boto3

如何冻结Boto3
EN

Stack Overflow用户
提问于 2016-11-01 14:26:55
回答 2查看 659关注 0票数 2

我创建了这个简单的python程序,它向SQS发送消息,然后检索它。它使用python 2.7.11工作。

代码语言:javascript
复制
import boto3 
sqs = boto3.client('sqs')
queue = sqs.get_queue_by_name(QueueName='some-que-name')
queue.send_message(MessageBody='{"phrase": "It\'s the end of the world    as we know it" }' )
for message in queue.receive_messages():
    print message.body

然后我用下面的脚本来cxFreeze它:

代码语言:javascript
复制
from cx_Freeze import setup, Executable

include_mods = []

excludes = ['tkinter', 'cltk']

buildOptions = dict(packages=[], excludes=excludes, includes=include_mods)


executables = [
     Executable('./frozen_boto_3_test.py', 'Console')
]

setup(name='Boto3FrozenTest',
  version='1',
  description='A test to make sure boto3 is working well when frozen',
  options=dict(build_exe=buildOptions),
  executables=executables)

然后,当我试图运行冻结的代码时,我会得到这个错误。

代码语言:javascript
复制
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
    exec(code, m.__dict__)
  File "./frozen_boto_3_test.py", line 1, in <module>
    import boto3 
  File "/usr/local/lib/python2.7/site-packages/boto3/__init__.py", line 16, in <module>
    from boto3.session import Session
  File "/usr/local/lib/python2.7/site-packages/boto3/session.py", line 17, in <module>
    import botocore.session
  File "/usr/local/lib/python2.7/site-packages/botocore/session.py", line 25, in <module>
    import botocore.configloader
  File "/usr/local/lib/python2.7/site-packages/botocore/configloader.py", line 18, in <module>
    from six.moves import configparser
  File "/usr/local/lib/python2.7/site-packages/six.py", line 203, in load_module
    mod = mod._resolve()
  File "/usr/local/lib/python2.7/site-packages/six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "/usr/local/lib/python2.7/site-packages/six.py", line 82, in _import_module
    __import__(name)
ImportError: No module named ConfigParser

除了这个问题,库似乎动态地加载不是s3、dynamo或其他服务的服务。

有冷冻boto3的秘方吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-02 14:26:42

错误显示正在发生隐藏(动态)导入。如果您将它正在寻找的模块(ConfigParser)包含在您告诉cx_Freeze包含的模块列表中,那么它应该可以工作。你可能得这样做好几次。

代码语言:javascript
复制
executables = [cx_Freeze.Executable("MyScript.py")]
includes = ["ConfigParser"]
buildOptions = dict(includes = includes)
cx_Freeze.setup(name, description, options = dict(build_exe = buildOptions),
        executables = executables)

一旦您有了一个工作程序,您也可以这样做,而不是操纵您的特定setup.py。您可以在cx_Freeze.hooks模块中添加一个条目,如下所示:

代码语言:javascript
复制
def load_boto3(finder, module):
    finder.IncludeModule("ConfigParser")

包括你沿途发现的任何其他东西。然后在这里创建一个拉请求或问题:

freeze

票数 2
EN

Stack Overflow用户

发布于 2016-11-02 18:13:11

谢谢安东尼·图宁加

我在这里还发布了几个步骤:

添加"ConfigParser“和"HTMLParser”,正如安东尼所指出的

代码语言:javascript
复制
from cx_Freeze import setup, Executable

include_mods = ["ConfigParser", "HTMLParser"]

excludes = ['tkinter', 'cltk']

buildOptions = dict(packages=[], excludes=excludes, includes=include_mods)


executables = [
     Executable('./frozen_boto_3_test.py', 'Console')
]

setup(name='Boto3FrozenTest',
  version='1',
  description='A test to make sure boto3 is working well when frozen',
  options=dict(build_exe=buildOptions),
  executables=executables)

导出AWS_DATA_PATH=/usr/local/lib/python2.7/dist-packages/botocore/data从:requests.exceptions.SSLError: [Errno 2] No such file or directory

导出REQUESTS_CA_BUNDLE=/usr/local/lib/python2.7/dist-packages/botocore/vendored/requests/cacert.pem

使用较低级别的代码使用sqs:

代码语言:javascript
复制
import boto3 

sqs = boto3.client('sqs')

queue = sqs.create_queue( QueueName="my-queue" )
sqs.send_message(QueueUrl=queue["QueueUrl"] , MessageBody='{"phrase": "It\'s the end of the world as we know it" }' )
message = sqs.receive_message(QueueUrl=queue["QueueUrl"])
for msg in message['Messages']: 
    print m

sg‘’Body‘

在此之后,sqs适用于OP上发布的“hello world”脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40362094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档