Cloud9でLambdaを作ろうとして失敗した記録

残念ながら

このページは残念な記録しかないので、こういうことが起こるんだぁぐらいにしか役立ちません。 解決方法もありません。誰かに教えてほしい状態です。

Command failed: virtualenv venv -p python3.7

$ python -V
Python 3.6.12
$ python -m pip -V
pip 20.3.1 from /home/ec2-user/.local/lib/python3.6/site-packages/pip (python 3.6)

$ sudo python -V
Python 3.6.12
$ sudo pip -V
pip 9.0.3 from /usr/lib/python3.6/dist-packages (python 3.6)

作成内容

f:id:ponsuke_tarou:20201207204413p:plain

エラー

f:id:ponsuke_tarou:20201207204425p:plain

原因 : 不明

# インストールディレクトリを見てみると
$ which python
/usr/bin/python
# Pythonは「2.7」「3.6」はあるが「3.7」はない
$ ls -la /usr/bin/ | grep python
lrwxrwxrwx  1 root root          24 Dec  7 09:52 python -> /etc/alternatives/python
lrwxrwxrwx  1 root root          17 Dec  4 16:25 python2 -> /usr/bin/python27
-rwxr-xr-x  1 root root        5104 Nov  2 22:27 python27
-rwxr-xr-x  1 root root        5104 Nov  2 22:27 python2.7
-rwxr-xr-x  1 root root        1846 Nov  2 22:27 python2.7-config
lrwxrwxrwx  1 root root          25 Dec  4 16:26 python3 -> /etc/alternatives/python3
-rwxr-xr-x  3 root root        6872 Aug 31 18:58 python36
-rwxr-xr-x  3 root root        6872 Aug 31 18:58 python3.6
lrwxrwxrwx  1 root root          17 Dec  4 16:26 python3.6-config -> python3.6m-config
-rwxr-xr-x  3 root root        6872 Aug 31 18:58 python3.6m
-rwxr-xr-x  1 root root         173 Aug 31 18:57 python3.6m-config
-rwxr-xr-x  1 root root        3373 Aug 31 18:41 python3.6m-x86_64-config
lrwxrwxrwx  1 root root          32 Dec  4 16:26 python3-config -> /etc/alternatives/python3-config
lrwxrwxrwx  1 root root          31 Dec  7 09:52 python-config -> /etc/alternatives/python-config

Python3.7をインストールしてもダメだった

参考 : pyenvによる仮想Python環境をAWS Cloud9上で構築する | Developers.IO

#### pyenvをインストールする
# pyenvをGitHubからCloneする
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
Cloning into '/home/ec2-user/.pyenv'...
remote: Enumerating objects: 18376, done.
remote: Total 18376 (delta 0), reused 0 (delta 0), pack-reused 18376
Receiving objects: 100% (18376/18376), 3.67 MiB | 2.61 MiB/s, done.
Resolving deltas: 100% (12514/12514), done.
# バージョンを確認する
$ ~/.pyenv/bin/pyenv --version
pyenv 1.2.21-1-g943015eb
# .bashrcに定義を書いて
$ vi ~/.bashrc
$ cat ~/.bashrc | grep pyenv
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
# 反映させてPATHを通す
$ source ~/.bashrc
$ printenv PATH | sed -e 's/:/:\n/g' | grep pyenv
/home/ec2-user/.pyenv/bin:
$ pyenv --version
pyenv 1.2.21-1-g943015eb



#### Python3.7をインストールする
# インストールできるPython3.7を確認する
$ pyenv install -l | grep 3.7
  2.3.7
  3.3.7
  3.7.0
  3.7-dev
  3.7.1
  3.7.2
  3.7.3
  3.7.4
  3.7.5
  3.7.6
  3.7.7
  3.7.8
  3.7.9
  miniconda-3.7.0
  miniconda3-3.7.0
  stackless-3.3.7
  stackless-3.7.5
# Python3.7.9をインストールする
$ pyenv install 3.7.9
Downloading Python-3.7.9.tar.xz...
-> https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tar.xz
Installing Python-3.7.9...
python-build: use readline from homebrew
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
Installed Python-3.7.9 to /home/ec2-user/.pyenv/versions/3.7.9
# WARNINGで出ている不足したものをインストールする
$ sudo yum -y install bzip2 readline
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                   | 2.1 kB  00:00:00     
amzn-updates                                                                                | 3.8 kB  00:00:00     
1067 packages excluded due to repository priority protections
Package bzip2-1.0.6-8.12.amzn1.x86_64 already installed and latest version
Package readline-6.2-9.14.amzn1.x86_64 already installed and latest version
Nothing to do
# Python3.7に切り替える
$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
  3.7.9
$ pyenv global 3.7.9
$ python -V
Python 3.7.9


### ターミナルでエラーになったコマンドは実行できる・・・でもLambda関数が作れない・・・
$ virtualenv venv -p python3.7
Running virtualenv with interpreter /home/ec2-user/.pyenv/shims/python3.7
Using base prefix '/home/ec2-user/.pyenv/versions/3.7.9'
New python executable in /home/ec2-user/environment/venv/bin/python3.7
Also creating executable in /home/ec2-user/environment/venv/bin/python
Installing setuptools, pip, wheel...
done.

Sorry, IKPdb only supports Python 3.6.x for now.

  • 環境
    • EC2 instance / Amazon Linux 2
    • Python 3.7.9
    • pip 20.3(rootのpipはアップグレードする等々していて紛失中)
$ python -V
Python 3.7.9

$ pip -V
pip 20.3 from /home/ec2-user/.local/lib/python3.7/site-packages/pip (python 3.7)

$ sudo python -V
Python 2.7.18

$ sudo pip -V
sudo: pip: command not found

作成内容

f:id:ponsuke_tarou:20201207153031p:plain
ランタイムをPython3.7にしたくてblueprintで「microservice-http-endpoint」を選択した

エラー

The following error was encountered when attempting to create your serverless application
Command failed: venv/bin/pip install ikp3db==1.1.4
ERROR: Command errored out with exit status 1:
command: /home/ec2-user/environment/a/venv/bin/python3.7 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9w9degcv/ikp3db_0b4451da9ebd4366a50f7baed6b7014c/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9w9degcv/ikp3db_0b4451da9ebd4366a50f7baed6b7014c/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-va_wyotl
cwd: /tmp/pip-install-9w9degcv/ikp3db_0b4451da9ebd4366a50f7baed6b7014c/
Complete output (1 lines):
Sorry, IKPdb only supports Python 3.6.x for now.
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

f:id:ponsuke_tarou:20201207153233p:plain

原因 : 不明

そもそもIKPdbとはなんぞや?

これには ikpdb という名前のモジュールが含まれており、AWS Cloud9 はこれを使用して Python アプリケーションをデバッグします。

との共同作業 AWS Lambda の関数 AWS Cloud9 Integrated Development Environment (IDE) - AWS Cloud9

Python2.7しかサポートしないよ的なことを言っている気がします。

Please note that IKPdb supports only CPython 2.7, CPython 3 support is the next step.

Welcome to IKPdb’s documentation! — IKPdb 1.0.0 documentation

いや、Python3以降は「IKPdb」ではなく「IKP3db」を使うのか?エラーもikp3db==1.1.4になっている。

IKP3db is a Python 3 debugger. For Python 2 see the IKPdb project on github and pypi.

ikp3db · PyPI

「IKP3db」はバージョン「1.3」以降でPython3.7に対応している・・・のかな?

1.3

Add Python 3.7 support (debugger can now be invoked using the breakpoint() function).

Ikp3db Changelog - pyup.io

対応 : あきらめる

Lambdaの画面から関数を作成しようっと

Command failed: virtualenv venv -p python3.6

  • 環境
    • EC2 instance / Amazon Linux 2
    • Python 3.7.9
    • pip 20.3(rootのpipはアップグレードする等々していて紛失中)
$ python -V
Python 3.7.9

$ pip -V
pip 20.3 from /home/ec2-user/.local/lib/python3.7/site-packages/pip (python 3.7)

$ sudo python -V
Python 3.7.9

$ sudo pip -V
sudo: pip: command not found

作成内容

f:id:ponsuke_tarou:20201207142629p:plain
[Select runtime]にPythonが「3.6」しかないので選択Python3.6を指定した

エラー

f:id:ponsuke_tarou:20201207142743p:plain

原因 : 不明

# インストールディレクトリを見てみると
$ which python
alias python='python3'
        /usr/bin/python3
# Pythonは「2.7」「3.7」はあるが「3.6」はない
$ ls -la /usr/bin/ | grep python                                                                                                                                                      
lrwxrwxrwx  1 root root          24 Dec  7 05:07 python -> /etc/alternatives/python
lrwxrwxrwx  1 root root           9 Nov  6 19:45 python2 -> python2.7
-rwxr-xr-x  1 root root        7048 Aug 27 21:23 python2.7
-rwxr-xr-x  1 root root        1846 Aug 27 21:23 python2.7-config
lrwxrwxrwx  1 root root          16 Nov  6 19:45 python2-config -> python2.7-config
lrwxrwxrwx  1 root root           9 Nov  6 19:57 python3 -> python3.7
-rwxr-xr-x  2 root root        7048 Aug 27 22:02 python3.7
lrwxrwxrwx  1 root root          17 Nov  6 19:57 python3.7-config -> python3.7m-config
-rwxr-xr-x  2 root root        7048 Aug 27 22:02 python3.7m
-rwxr-xr-x  1 root root         173 Aug 27 22:02 python3.7m-config
-rwxr-xr-x  1 root root        3210 Aug 27 21:16 python3.7m-x86_64-config
lrwxrwxrwx  1 root root          16 Nov  6 19:57 python3-config -> python3.7-config
lrwxrwxrwx  1 root root          14 Nov  6 19:45 python-config -> python2-config

対応 : Python3.6にこだわりがないのであきらめる

  1. Python2からPython3へ自力でバージョンアップしてYumが壊れたので修理する
  2. yumをアップデート
  3. Python3.6を探す >> インストールできそうなものがわからないので面倒くさくてあきらめた
$ sudo yum -y update
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                                                                                                                             | 3.7 kB  00:00:00     
...
Complete!

$ yum search python36-dev
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
220 packages excluded due to repository priority protections
========================================================================================= N/S matched: python36-dev ==========================================================================================
boost-python36-devel.x86_64 : Shared object symbolic links for Boost.Python 3
shiboken-python36-devel.x86_64 : Development files for shiboken

  Name and summary matches only, use "search all" for everything.