コツ
コツ
コンパイル情報?を必要とするものと必要としないものがあるので注意。
必要としないもの→local PCでもOK.
必要とするもの→amazon linux (nomal)にて作成しなければならない
★展開して250MBこえるとアウト
★layerは5つまでしかできないので固めるのが吉
コンパイル情報を必要としないもの(localPC実施)
- 基本的にbinは消していい
- dist-infoも消していい
- キャッシュも消していい
- ドラックアンドドロップしてたらDSStore入っているので消す(ゴミなので)
find . -name "__pycache__" | xargs rm -rf
find . -name "*dist-info" | xargs rm -r
find . -name "*.so" | xargs rm
rm -r bin
find . -name ".DS_Store" | xargs rm
必ず親をpythonという名前のディレクトリにしてそれごと固めること!
ls
python ←ディレクトリ
zip -r hoge.zip *
コンパイル情報を必要とするもの(Amazon linux実施)
- binや.cは残す
- dist-infoは消していい
- キャッシュも消していい
- python3環境をつくってそれでやるのがベスト
amazonlinuxを作る
1.作る
2.python3.6を入れる
参照:https://qiita.com/hitobb/items/62bcd1c4995d996d4652
3.pip3 install virtualenv
4.virtualenv -p python3 hoge仮想環境名
5.source hoge/bin/activate
6.sudo yum groupinstall "Development Tools"
参考:https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/compile-software.html
7.mkdir huga/python
8.pip -V
python -V
仮想環境が、python3, pip3になっていることを確認
9.pip install piyo -t ./huga/python
軽量化
find . -name "__pycache__" | xargs rm -rf
find . -name "*dist-info" | xargs rm -r
必ず親をpythonという名前のディレクトリにしてそれごと固めること!
ls
python ←ディレクトリ
zip -r hoge.zip *
pandas
★依存関係(pip入れると入ってくるもの)
・dateutil
・pandas
・numpy:別のlayerで入るのであればこれ削除して軽くすることも可能 70MB
・pytz
・six.py
pandas: 113MB
pandas-neednumpy: 37.3MB
numpyだけ削除したもの。このlayer単体では動かないので注意。
opencv
★依存関係(pip入れると入ってくるもの)
・cv2
・numpy:別のlayerで入るのであればこれ削除して軽くすることも可能 70MB
ポイント
pandasとopencvを共存させるのであれば、
pandas-neednumpy
としてpandasからnumpyを消したlayer①と、numpyが入ったopencv layer②を入れれば良い
opencv: 154.6MB
PIL
Pillowは特殊。
amazonlinux(python3.6なら普通のノーマルlinux)でインストールしたものをzipしないといけないっぽい。
Cのバイナリデータを含む?