2

我有 boto 2.3.0 neo 分支和 python 3.3。我用 boto 从 simpledb 收集数据,效果很好。但是现在当我尝试 boto 连接到 s3 时出现错误。谁能指导我正确的方向。我真的不想降级我的 python,因为我的整个项目都在 python 3.3 中。

这是我写的命令列表:

       >>> from boto.s3.key import Key
       >>> k = Key(bucket)
       >>> k.key='testfile'
       >>> k.set_contents_from_string('Hello this is my Boto S3 Test')

这是我在执行最后一个命令时遇到的错误列表:

       Traceback (most recent call last):
       File "<pyshell#8>", line 1, in <module>
       k.set_contents_from_string('Hello this is my Boto S3 Test')
       File "C:\Python33\lib\site-packages\boto\s3\key.py", line 1060, in              
       set_contents_from_string
       fp = compat.StringIO(s)
       TypeError: initial_value must be str or None, not bytes

我一直遇到的其他问题(我猜root是一样的)在这个链接中给出:

iter() 返回“Key”类型的非迭代器:boto amazon s3

4

4 回答 4

1

实际上 boto 可以在 Python 3 中运行。

放:

于 2016-09-01T16:39:05.547 回答
0

是的,简短的回答......你必须重构,这不一定是一件坏事,因为这应该被移植到 3。尝试在源代码上运行 2to3 并使用 Python3 构建......解决出现的任何问题构建过程...如果您在项目中使用了很多 boto 功能,那么需要处理的将比上面的答案少。

于 2013-10-30T23:55:41.730 回答
0

我有完全相同的问题,并写了一个小python包来解决它。这将让您创建一个 python2 virtualenv,并将 boto 包无缝导入到您的 python3 包中。

或者,您可以进行系统安装awscli(它使用 python2,因为它基于 boto),然后通过subprocess.check_call().

于 2014-07-27T04:49:59.707 回答
0

这个问题看起来像是 StringIO 与 BytesIO 的问题。在这里查看线索:

https://docs.python.org/2/library/io.html

于 2014-04-07T18:19:29.423 回答