LoginSignup
5
4

More than 1 year has passed since last update.

Pythonパッケージをwhlファイルを使ってインストールする

Last updated at Posted at 2022-10-02

背景・目的

インターネットに接続できない環境で、Wheelファイルを使用することでPythonのパッケージのインストールが可能です。
今回は、IGWがアタッチされていない環境でEC2に、boto3をインストールします。

まとめ

  • pipを使わずに、whlファイルを使ってインストールします。

概要

Wheelファイルとは?

PEP427を参照すると、以下のように書かれています。

wheel は、特別な形式のファイル名と .whl 拡張子を持つ ZIP 形式のアーカイブです。特定のインストールスキームで PEP 376 に従ってインストールされるのとほぼ同じ単一のディストリビューションが含まれています。専用のインストーラーが推奨されますが、標準の「unzip」ツールを使用してサイト パッケージに展開するだけでホイール ファイルをインストールできます。

  • Wheelは、ZIP形式のアーカイブのこと。拡張子は、「.whl」。

実践

インターネットが繋がるPC上で、whlファイルをダウンロードし一旦S3に配置後、EC2からダウンロードしインストールします。

whlファイルのダウンロード

インターネットが繋がるPCで、boto3と関連するファイルをダウンロードし、S3にアップロードします。

curl https://files.pythonhosted.org/packages/23/d8/3b41ce8c96dedbb449f24de21eee0742786f414fea176f984b1101154f30/boto3-1.24.84-py3-none-any.whl -O
curl https://files.pythonhosted.org/packages/36/32/6ddb12143e32535550263514875db6d1a3ad50daf1377fbb1aac03a000aa/botocore-1.27.84-py3-none-any.whl -O
curl https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl -O
curl https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl -O
curl https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl -O
curl https://files.pythonhosted.org/packages/6f/de/5be2e3eed8426f871b170663333a0f627fc2924cc386cd41be065e7ea870/urllib3-1.26.12-py2.py3-none-any.whl -O

aws s3 cp boto3-1.24.84-py3-none-any.whl s3://${バケット名}/ec2/
aws s3 cp botocore-1.27.84-py3-none-any.whl s3://${バケット名}/ec2/
aws s3 cp jmespath-1.0.1-py3-none-any.whl s3://${バケット名}/ec2/
aws s3 cp python_dateutil-2.8.2-py2.py3-none-any.whl s3://${バケット名}/ec2/
aws s3 cp six-1.16.0-py2.py3-none-any.whl s3://${バケット名}/ec2/
aws s3 cp urllib3-1.26.12-py2.py3-none-any.whl s3://${バケット名}/ec2/

インストール

EC2にログインし、先程、アップロードしたファイルをS3からダウンロード後、インストールします。

aws s3 cp s3://${バケット名}/ec2/boto3-1.24.84-py3-none-any.whl /home/ssm-user/
aws s3 cp s3://${バケット名}/ec2/botocore-1.27.84-py3-none-any.whl /home/ssm-user/
aws s3 cp s3://${バケット名}/ec2/mespath-1.0.1-py3-none-any.whl /home/ssm-user/
aws s3 cp s3://${バケット名}/ec2/python_dateutil-2.8.2-py2.py3-none-any.whl  /home/ssm-user/
aws s3 cp s3://${バケット名}/ec2/six-1.16.0-py2.py3-none-any.whl  /home/ssm-user/
aws s3 cp s3://${バケット名}/ec2/urllib3-1.26.12-py2.py3-none-any.whl  /home/ssm-user/


sh-4.2$ pwd
/home/ssm-user
sh-4.2$ ls -l
total 9528
-rw-r--r-- 1 ssm-user ssm-user  132500 Oct  1 15:13 boto3-1.24.84-py3-none-any.whl
-rw-r--r-- 1 ssm-user ssm-user 9189276 Oct  1 15:46 botocore-1.27.84-py3-none-any.whl
-rw-r--r-- 1 ssm-user ssm-user   20256 Oct  1 15:53 jmespath-1.0.1-py3-none-any.whl
-rw-r--r-- 1 ssm-user ssm-user  247702 Oct  1 15:58 python_dateutil-2.8.2-py2.py3-none-any.whl
-rw-r--r-- 1 ssm-user ssm-user   11053 Oct  1 16:05 six-1.16.0-py2.py3-none-any.whl
-rw-r--r-- 1 ssm-user ssm-user  140381 Oct  1 16:09 urllib3-1.26.12-py2.py3-none-any.whl
sh-4.2$

pip3 install  --no-deps ./boto3-1.24.84-py3-none-any.whl
pip3 install  --no-deps ./botocore-1.27.84-py3-none-any.whl
pip3 install  --no-deps ./mespath-1.0.1-py3-none-any.whl
pip3 install  --no-deps ./python_dateutil-2.8.2-py2.py3-none-any.whl
pip3 install  --no-deps ./six-1.16.0-py2.py3-none-any.whl
pip3 install  --no-deps ./urllib3-1.26.12-py2.py3-none-any.whl

sh-4.2$ pip3 list
Package           Version
----------------- -------
aws-cfn-bootstrap 2.0
boto3             1.24.84
botocore          1.27.84
docutils          0.14
jmespath          1.0.1
lockfile          0.11.0
pip               20.2.2
pystache          0.5.4
python-daemon     2.2.3
python-dateutil   2.8.2
setuptools        49.1.3
simplejson        3.2.0
six               1.16.0
urllib3           1.26.12
sh-4.2$

考察

インターネットに繋がらない環境で、環境を構築することはたまにあります。
忘れないようにメモとして残しておきます。

参考

5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4