質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

1回答

9310閲覧

dockerでrequrements.txtからpip installできない(Hashエラー)

simasimaa

総合スコア41

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2020/06/10 14:53

編集2020/06/13 16:27

https://sinyblog.com/docker/django-docker-001/#Dockerfileを参考にしてDocker環境でDjangoを作成しようとしたのですが
dockerでdocker-compose でpipコマンドを走らせてHash系のエラーが出ます。

ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them. Django==3.0.2 from https://files.pythonhosted.org/packages/55/d1/8ade70e65fa157e1903fe4078305ca53b6819ab212d9fbbe5755afc8ea2e/Django-3.0.2-py3-none-any.whl#sha256=4f2c913303be4f874015993420bf0bd8fd2097a9c88e6b49c6a92f9bdd3fb13a (from -r requirements.txt (line 1)): Expected sha256 4f2c913303be4f874015993420bf0bd8fd2097a9c88e6b49c6a92f9bdd3fb13a Got 6aba4ad691e29fadb6d5367e4c331bd4aee1d824fb4f005c3b8d3d9b055e8ad4

構成としてはプロジェクトのディレクトリ配下に以下のファイルを置いています。
Dokerfile

FROM python:3.6 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install pip==19.1.1 --no-cache-dir RUN pip install -r requirements.txt --no-cache-dir

requirements.txt

Django==3.0.2 psycopg2

docker-compose.yml

version: '3' services: db: image: postgres web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db

そしてdocker-compose up build
で実行すると上記エラーが発生します

DockerFileの--no-cache-dirはこのエラーはキャッシュから取得しているため発生するとの情報を得てつけていますが、これでも同じエラーが出ます。
https://stackoverflow.com/questions/61551480/clean-docker-pip-install-results-in-error-these-packages-do-not-match-the-hashe
によりpipのversionの問題らしくpipのversionを変更するようにしていますが、それでも同じエラーが出ています。

この解決策はありますか?

https://qiita.com/reflet/items/4b3f91661a54ec70a7dc
を参考にしてdockerでpythonを実行し、内部でpip install package名 を実行したところ同じHashのエラーが起こりました。
docker-toolboxでpythonのpipは実行できないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bsdfan

2020/06/15 01:42

python:3.6のイメージが古くなっているとかはないでしょうか? docker pull python:3.6 で更新したら改善したりしませんか。
yymmt

2020/06/29 16:52

参考までに先ほどダウンロードしたばかりのpython:3.6でpip==20.1.1で特に問題は発生していません。
simasimaa

2020/07/24 09:16

別のPCでDocker ForWindowsで行ったらエラーは発生しませんでした。
guest

回答1

0

追記

少なくともコンテナには原因がなさそうで、
環境依存であることが明確になりつつあります

コンテナがリクエストしている Django のハッシュ

こちらは問題なさそうです

現在 Docker コンテナがリクエストしている Django のハッシュは
PyPI 上のハッシュと一致しています:

Django · PyPI

ハッシュが一致していることの確認

他に考えられる原因

まだなんとも言えませんが、次の点が気になります:

ネットワーク:

  • DNS が違う宛先を返している可能性
  • PyPI に到達するまでのどこかでキャッシュが返ってきている可能性

コンピューター:

  • ホストの Docker, Docker Compose のバグの可能性

切り分け

可能であれば、
現在コンテナをビルドしているコンピューターとネットワークの
どちらかだけを交換してみてビルドを行い、切り分けを行うと
原因がより明確になります

コンピューター|ネットワーク|結果
---|---
今ビルドしているコンピューター|今ビルドしているネットワーク|×
今ビルドしているコンピューター|別のネットワーク|
別のコンピューター|今ビルドしているネットワーク|
別のコンピューター|別のネットワーク|◯

第一次調査

次のコマンドで Python のイメージを削除してやり直すと改善しませんでしょうか?:

# 念のため失敗した Python イメージをバックアップ docker tag python:3.6 python:sut docker rmi python:3.6 docker-compose build --no-cache

こちらの環境では問題なく動作しました。

console

1$ docker-compose up 2Creating network "test-docker-django_default" with the default driver 3Pulling db (postgres:)... 4latest: Pulling from library/postgres 5Digest: sha256:9ba6355d27ba9cd0acda1e28afaae4a5b7b2301bbbdc91794dcfca95ab08d2ef 6Status: Downloaded newer image for postgres:latest 7Building web 8Step 1/7 : FROM python:3.6 93.6: Pulling from library/python 10Digest: sha256:6655d57ae9272f09839a25d0ec0d272513663d99a4ad7af8b061c83a76d10295 11Status: Downloaded newer image for python:3.6 12 ---> 13efce2de907 13Step 2/7 : ENV PYTHONUNBUFFERED 1 14 ---> Running in 543c271145c9 15Removing intermediate container 543c271145c9 16 ---> 12d70abf69df 17Step 3/7 : RUN mkdir /code 18 ---> Running in 8f02235b9c79 19Removing intermediate container 8f02235b9c79 20 ---> 52ece72377a2 21Step 4/7 : WORKDIR /code 22 ---> Running in 0b428211651a 23Removing intermediate container 0b428211651a 24 ---> 95db4a2b1a35 25Step 5/7 : ADD requirements.txt /code/ 26 ---> 960ba26ba189 27Step 6/7 : RUN pip install pip==19.1.1 --no-cache-dir 28 ---> Running in 19c4c86dae52 29Collecting pip==19.1.1 30 Downloading pip-19.1.1-py2.py3-none-any.whl (1.4 MB) 31Installing collected packages: pip 32 Attempting uninstall: pip 33 Found existing installation: pip 20.1.1 34 Uninstalling pip-20.1.1: 35 Successfully uninstalled pip-20.1.1 36Successfully installed pip-19.1.1 37Removing intermediate container 19c4c86dae52 38 ---> 9299e009e221 39Step 7/7 : RUN pip install -r requirements.txt --no-cache-dir 40 ---> Running in 3bc4f7c645a8 41Collecting Django==3.0.2 (from -r requirements.txt (line 1)) 42 Downloading https://files.pythonhosted.org/packages/55/d1/8ade70e65fa157e1903fe4078305ca53b6819ab212d9fbbe5755afc8ea2e/Django-3.0.2-py3-none-any.whl (7.4MB) 43Collecting psycopg2 (from -r requirements.txt (line 2)) 44 Downloading https://files.pythonhosted.org/packages/a8/8f/1c5690eebf148d1d1554fc00ccf9101e134636553dbb75bdfef4f85d7647/psycopg2-2.8.5.tar.gz (380kB) 45Collecting sqlparse>=0.2.2 (from Django==3.0.2->-r requirements.txt (line 1)) 46 Downloading https://files.pythonhosted.org/packages/85/ee/6e821932f413a5c4b76be9c5936e313e4fc626b33f16e027866e1d60f588/sqlparse-0.3.1-py2.py3-none-any.whl (40kB) 47Collecting pytz (from Django==3.0.2->-r requirements.txt (line 1)) 48 Downloading https://files.pythonhosted.org/packages/4f/a4/879454d49688e2fad93e59d7d4efda580b783c745fd2ec2a3adf87b0808d/pytz-2020.1-py2.py3-none-any.whl (510kB) 49Collecting asgiref~=3.2 (from Django==3.0.2->-r requirements.txt (line 1)) 50 Downloading https://files.pythonhosted.org/packages/d5/eb/64725b25f991010307fd18a9e0c1f0e6dff2f03622fc4bcbcdb2244f60d6/asgiref-3.2.10-py3-none-any.whl 51Building wheels for collected packages: psycopg2 52 Building wheel for psycopg2 (setup.py): started 53 Building wheel for psycopg2 (setup.py): finished with status 'done' 54 Stored in directory: /tmp/pip-ephem-wheel-cache-xfaezrjm/wheels/fb/85/a8/57f24b92b9554880384d00a84881c0ea80cbcee02d6dcede54 55Successfully built psycopg2 56Installing collected packages: sqlparse, pytz, asgiref, Django, psycopg2 57Successfully installed Django-3.0.2 asgiref-3.2.10 psycopg2-2.8.5 pytz-2020.1 sqlparse-0.3.1 58WARNING: You are using pip version 19.1.1, however version 20.1.1 is available. 59You should consider upgrading via the 'pip install --upgrade pip' command. 60Removing intermediate container 3bc4f7c645a8 61 ---> d15023b3318d 62Successfully built d15023b3318d 63Successfully tagged test-docker-django_web:latest 64Image for service web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. 65Creating test-docker-django_db_1 ... done 66Creating test-docker-django_web_1 ... done 67Attaching to test-docker-django_db_1, test-docker-django_web_1 68db_1 | Error: Database is uninitialized and superuser password is not specified. 69db_1 | You must specify POSTGRES_PASSWORD to a non-empty value for the 70db_1 | superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run". 71db_1 | 72db_1 | You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all 73db_1 | connections without a password. This is *not* recommended. 74db_1 | 75db_1 | See PostgreSQL documentation about "trust": 76db_1 | https://www.postgresql.org/docs/current/auth-trust.html 77web_1 | python3: can't open file 'manage.py': [Errno 2] No such file or directory 78test-docker-django_db_1 exited with code 1 79test-docker-django_web_1 exited with code 2

こちらで実行したときの Python のコンテナのイメージは次のものでした:

console

1python 3.6 13efce2de907 2 weeks ago 914MB

投稿2020/06/26 10:08

編集2020/06/29 18:24
y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

simasimaa

2020/06/29 15:25

やっぱりうまくいってないです。DockerImageは同じなのですが。 $ docker-compose build --no-cache db uses an image, skipping Building web Step 1/6 : FROM python:3.6 3.6: Pulling from library/python Digest: sha256:6655d57ae9272f09839a25d0ec0d272513663d99a4ad7af8b061c83a76d10295 Status: Downloaded newer image for python:3.6 ---> 13efce2de907 Step 2/6 : ENV PYTHONUNBUFFERED 1 ---> Running in 1d50a6e3f6f2 Removing intermediate container 1d50a6e3f6f2 ---> f81579a34ea9 Step 3/6 : RUN mkdir /code ---> Running in fe2fbdd89834 Removing intermediate container fe2fbdd89834 ---> d7c3425b06aa Step 4/6 : WORKDIR /code ---> Running in ddeed0a6b2a5 Removing intermediate container ddeed0a6b2a5 ---> bfbd540fc2a3 Step 5/6 : ADD requirements.txt /code/ ---> d5ed5a3690a1 Step 6/6 : RUN pip install -r requirements.txt --no-cache-dir ---> Running in 0111d47e55a0 Collecting Django==3.0.2 Downloading Django-3.0.2-py3-none-any.whl (7.4 MB) Collecting psycopg2 Downloading psycopg2-2.8.5.tar.gz (380 kB) ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them. Django==3.0.2 from https://files.pythonhosted.org/packages/55/d1/8ade70e65fa157e1903fe4078305ca53b6819ab212d9fbbe5755afc8ea2e/Django-3.0.2-py3-none-any.whl#sha256=4f2c913303be4f874015993420bf0bd8fd2097a9c88e6b49c6a92f9bdd3fb13a (from -r requirements.txt (line 1)): Expected sha256 4f2c913303be4f874015993420bf0bd8fd2097a9c88e6b49c6a92f9bdd3fb13a Got ae0420e9793b5caa43a4eb8728bd5946b3fc711c8cd3113719ff67b68f108432 psycopg2 from https://files.pythonhosted.org/packages/a8/8f/1c5690eebf148d1d1554fc00ccf9101e134636553dbb75bdfef4f85d7647/psycopg2-2.8.5.tar.gz#sha256=f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818 (from -r requirements.txt (line 2)): Expected sha256 f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818 Got 3afc1b6b89d952edf070c7dd1d90508382ff0cc2a350caca99c01a2e08aa4ed1 ERROR: Service 'web' failed to build: The command '/bin/sh -c pip install -r requirements.txt --no-cache-dir' returned a non-zero code: 1 Docker fileの RUN pip install pip==19.1.1 --no-cache-dir の部分はつけてもつけなくてもエラーになるのでいったん外しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問