尝试使用CLI在ElasticBeanstalk上创建Python应用程序,在选择我的平台版本后,我收到以下错误:
Select a platform version.
1) Python 3.4
2) Python
3) Python 2.7
4) Python 3.4 (Preconfigured - Docker)
(default is 1): 1
ERROR: UnicodeDecodeError :: 'ascii' codec can't decode byte 0xe2 in position 891: ordinal not in range(128)
我发现了这个:https://github.com/aws/aws-cli/issues/708这让我觉得我可能粘贴了我的AWS凭据并添加了换行符。我想重新输入凭据,但似乎它们被缓存在某个地方(它在第一次安装尝试时询问了我们,但没有任何子序列尝试)。我没有在我的环境变量中看到它们,我一直在尝试之间删除.elasticbeanstalk。有什么想法吗?
更新:我删除了.aws / config,这样我就可以重新输入我的凭据了。当我尝试运行 eb init
时仍然会出现相同的错误update2:--debug输出的要点可以在这里找到:https://gist.github.com/dshuhler/8d64849021c48bf1ba71
答案 0 :(得分:1)
tldr;我的.gitignore
具有隐藏的非ascii字符,因为我从流行的Github存储库中复制并粘贴了特定于Python的.gitignore
。
因此,我找不到任何可以帮助我解决该问题的答案。看起来,由于不同的原因,不同的人看到此错误。
我将分享我为找出问题原因所采取的步骤。确保使用--debug
标志
$ eb init --debug
我的输出是这样的
2019-05-05 13:44:17,548 (INFO) eb : Traceback (most recent call last):
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/core/ebrun.py", line 62, in run_app
app.run()
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/cement/core/foundation.py", line 797, in run
return_val = self.controller._dispatch()
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/cement/core/controller.py", line 472, in _dispatch
return func()
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/cement/core/controller.py", line 478, in _dispatch
return func()
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/core/abstractcontroller.py", line 89, in default
self.do_command()
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/controllers/initialize.py", line 118, in do_command
initializeops.setup(app_name, region_name, platform, dir_path=None, repository=repository, branch=branch)
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/operations/initializeops.py", line 57, in setup
setup_ignore_file()
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/operations/initializeops.py", line 92, in setup_ignore_file
source_control.set_up_ignore_file()
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/objects/sourcecontrol.py", line 294, in set_up_ignore_file
for line in f:
File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 1287: ordinal not in range(128)
我跳到了源代码,特别是这一点
for line in f:
我发现这是引发错误的部分
with open('.gitignore', 'r') as f:
for line in f:
if line.strip() == git_ignore[0]:
return
一旦我将.gitignore
删除后,它的工作原理就像是魅力(后来又添加了它,没有复制粘贴)
答案 1 :(得分:0)
您的凭据凭据位于~/.aws/config
答案 2 :(得分:0)
可能是您的Beanstalk运行了未定义LC_ALL
的Python环境。在Beanstalk环境属性中设置LC_ALL=en_US.UTF-8
可以为我解决此问题。
有关这些语言环境变量的一些背景信息,请访问:Explain the effects of export LANG, LC_CTYPE, LC_ALL