在Python3中使用boto
我有Boto2.3.0Neo分支和Python3.3。 我使用boto从simpledb收集数据,效果很好。 然而,现在当我尝试boto连接到s3时,我得到了错误。谁能给我指一下正确的方向吗。我真的不想降级我的python,因为我的整个项目都在python 3.3中 以下是我编写的命令列表:在Python3中使用boto,python,python-3.x,boto,Python,Python 3.x,Boto,我有Boto2.3.0Neo分支和Python3.3。 我使用boto从simpledb收集数据,效果很好。 然而,现在当我尝试boto连接到s3时,我得到了错误。谁能给我指一下正确的方向吗。我真的不想降级我的python,因为我的整个项目都在python 3.3中 以下是我编写的命令列表: >>> from boto.s3.key import Key >>> k = Key(bucket) >>>
>>> 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
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
k、 从字符串设置内容('您好,这是我的Boto S3测试')
文件“C:\Python33\lib\site packages\boto\s3\key.py”,第1060行,在
从\u字符串设置\u内容\u
fp=兼容字符串IO(s)
TypeError:初始值必须是str或None,而不是bytes
我遇到的其他问题(我想根是相同的)在以下链接中给出:
是的,简短的回答……你必须重构,这不一定是件坏事,因为这应该移植到3。尝试在源代码上运行2to3并使用Python3进行构建…解决构建过程中出现的任何问题…如果您在项目中使用了大量boto功能,那么要处理的问题将比上面的答案要少。这个问题看起来像是StringIO vs BytesIO的问题。请在此处查看线索:
我遇到了完全相同的问题,于是写了一篇文章来解决它。这将允许您创建一个python2 virtualenv,并将boto包无缝地导入到python3包中
或者,您可以执行
awscli
(它使用python2,因为它基于boto)的系统安装,然后通过子流程调用它 实际上,boto可以在Python 3中运行
设置:
- AWS博客的这篇博文:
- Travis CI测试:
- 其分类器:
有一个分支,也许你应该试试。官方发布的版本只有是的,我想。现在Iv意识到,除了一些列表功能外,Python3.3中并没有使用多少Iv。我想我必须回到2.7:(希望在Python3.x中有稳定的boto。谢谢,但我回到了使用2.x,该项目现在已经成功结束,所以我想下次:)