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

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

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

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

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Docker

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

Python

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

Q&A

解決済

1回答

3268閲覧

docker+python+djangoの環境構成でpip installされるが、no moduleエラーとなってしまう

minalo

総合スコア6

docker-compose

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

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Docker

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

Python

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

0グッド

0クリップ

投稿2021/08/23 17:51

編集2021/08/25 13:31

現在、dockerでPythonの環境構築をしてプログラミングをしており、pipのPyYAMLとrequestsをインストールして開発を行おうとしています。

ターミナル上ではpip installが成功しているが、src配下のsetteings.pyにてimport yamlを記述してもmoduleが見つからないエラーが発生しています。

###pip installを確認するまでに行ったコマンド

touch dockerfile,docker-compose.yml,requirment.txt dockerfile,docker-compose.yml,requirment.txtに下記コードを記載 docker-compose up -d --build #あらかじめ作っていたsrcディレクトリに移動 cd src docker-compose exec python django-admin startproject mysite . docker-compose exec python bash pip list

srcディレクトリに移った後にstartprojectコマンドを行い、src直下にsettings.pyを作成しました、

###dockerfileなどのコード

Dockerfile

1FROM python:3.9 2ENV PYTHONUNBUFFERED 1 3RUN mkdir /code 4WORKDIR /code 5ADD requirements.txt /code/ 6RUN pip install -r requirements.txt 7ADD . /code/ 8CMD /bin/bash

dockercompose

1version: '3' 2 3services: 4 python: 5 build: ./python 6 command: uwsgi --socket :8001 --module app.wsgi --py-autoreload 1 --logto /tmp/mylog.log 7 volumes: 8 - ./src:/code 9 - ./static:/static 10 expose: 11 - "8001" 12 depends_on: 13 - db

requirment

1Django==3.2 2uwsgi==2.0.17 3mysqlclient 4PyYAML==5.4.1 5requests

ビルドした際のメッセージがこちらになります。

Building python Step 1/8 : FROM python:3.9 ---> b2278d5ae327 Step 2/8 : ENV PYTHONUNBUFFERED 1 ---> Using cache ---> 1192e40607da Step 3/8 : RUN mkdir /code ---> Using cache ---> 6fe95fc8f35f Step 4/8 : WORKDIR /code ---> Using cache ---> f6a9602f9b48 Step 5/8 : ADD requirements.txt /code/ ---> Using cache ---> 8cc50cb6d613 Step 6/8 : RUN pip install -r requirements.txt ---> Using cache ---> 76dcbebe25c3 Step 7/8 : ADD . /code/ ---> 85111263d785 Step 8/8 : CMD /bin/bash ---> Running in e7382d7bd709 Removing intermediate container e7382d7bd709 ---> 1b760634e357 Successfully built 1b760634e357

問題解決にあたり調べたこと

docker-compose exec python bash pip list

上のコマンドでコンテナに接続を行い、pipがインストールされているのかを確認。

Package Version ------------------ --------- asgiref 3.4.1 certifi 2021.5.30 charset-normalizer 2.0.4 Django 3.2 idna 3.2 mysqlclient 2.0.3 pip 21.2.4 pytz 2021.1 PyYAML 5.4.1 requests 2.26.0 setuptools 57.4.0 sqlparse 0.4.1 urllib3 1.26.6 uWSGI 2.0.17 wheel 0.37.0

PyYAMLとrequestsがインストールされているのを確認。

###pip show PyYAMLを実行した結果

Name: PyYAML Version: 5.4.1 Summary: YAML parser and emitter for Python Home-page: https://pyyaml.org/ Author: Kirill Simonov Author-email: xi@resolvent.net License: MIT Location: /usr/local/lib/python3.9/site-packages Requires: Required-by:

###manage,pyにimport sys,pprintを追記して出力した結果

'/code', '/usr/local/lib/python39.zip', '/usr/local/lib/python3.9', '/usr/local/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages'

###manage,pyにprint(sys.version)を追記した結果

3.9.6(default, Jul 22 2021)

当方、docker初心者で色々と調べているのですが、答えが見つかっていないのが現状です。
初歩的なご質問でしたら申し訳ございません。
何卒、よろしくお願い致します。

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

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

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

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

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

llr114

2021/08/23 18:00

ひとまず pip show PyYAML を実行した結果。 あとは、適当な.pyファイルを作っていただいたも、コマンドで直接やっていただいたも構わないのですが、 import sys, pprint pprint.pprint(sys.path) の出力結果を教えていただきたいです。 申し訳ないですが、私自身、dockerに関しては初心者なのでその点ご了承ください。。。
minalo

2021/08/23 18:21 編集

お返事が遅れてしまい申し訳ございません。。。 pip show PyYAMLを実行した結果 ``` Name: PyYAML Version: 5.4.1 Summary: YAML parser and emitter for Python Home-page: https://pyyaml.org/ Author: Kirill Simonov Author-email: xi@resolvent.net License: MIT Location: /usr/local/lib/python3.9/site-packages Requires:  Required-by:  ``` manage,pyにimport sys,pprintを追記して出力した結果 ``` '/code', '/usr/local/lib/python39.zip', '/usr/local/lib/python3.9', '/usr/local/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages' ``` こちらになります。 よろしくお願い致します!
hentaiman

2021/08/24 00:54

何をした結果「ターミナル上ではpip installが成功しているが、src配下のsetteings.pyにてimport yamlを記述してもmoduleが見つからないエラーが発生しています。」なのかを追記してください 見て分かる通りコメント欄では見辛いので、追記の際はコメントへの返事と併せて質問を修正してください
minalo

2021/08/24 13:10

ご指摘ありがとうございます。 docker-composeでコンテナをbuildした後、startprojectコマンドでmysiteディレクトリを作成 mysiteディレクトリ配下のsettings.pyにimport yamlを記述しても、モジュールが見つからないエラーが発生しています。 docker-compose exec python bashコマンドでコンテナの中に入り、pip listコマンドを実行して、ターミナル上にはPyYAMLが記載されていた結果、ターミナルではインストール済みなのにsettings.pyにimport yamlを記述してもmoduleが見つからない、というエラーに陥っています。
minalo

2021/08/24 15:20

manage.pyに以下のコードを記載して出力した結果 ``` import sys print(sys.executable) ``` /usr/local/bin/pythonと表示されていました。 no module namedとなっていたのは、VS Code上で参照しているpythonのPathとdockerコンテナ内でインストールしていたパスに差異が生じていた為でした。 的外れな質問&前提の情報が不足した質問をしてしまい、申し訳ございませんでした。 以後、解決ができたら解決方法に記載致します。 ご協力いただき、本当にありがとうございました!
llr114

2021/08/24 17:47

manage.pyに print(sys.version) を追加してみていただいてもいいですか? また、応急処理みたいなものですが、 sys.path.append(/usr/local/lib/python3.9/site-packages) をmanage.pyのimport PyYAMLの前に追加してみて、エラーが出るか確認してみてください。
minalo

2021/08/25 13:29

manage.pyにprint(sys.version)を追記した結果 3.9.6 と出力されていました。 import部分の前にsys,path.appendを追記した結果なのですが、 no module nameのエラーが発生しております。
bsdfan

2021/08/25 14:18

docker-compose up でエラーがでるのでしょうか? vscodeがモジュールを見つけられていないだけということはないですか?
minalo

2021/08/28 10:21

返信が遅れてしまい、申し訳ございません。 docker-compose upではエラーが発生しておりません。 ご指摘の通り、vs codeがモジュールを見つけられないことがエラーの要因でした。
guest

回答1

0

自己解決

###エラー発生の要因

・vs codeがコンテナ内のpythonを参照していなかった
コンテナにはinstallされていたが、vs code側でコンテナ側のpythonを参照していないため、設定で齟齬が生じていました。

###解決策
コンテナ内のpythonを参照するためにVs Codeの拡張プラグインのRemote-containersを使用しました。
Remote-containersを使用してコンテナへリモート接続してコンテナ内の情報を参照しました。

質問に対してコメントなどをしていただき、本当にありがとうございました!

投稿2021/08/28 10:34

minalo

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問