Armadilloフォーラム

PythonによるIoT HUBへの接続を行うパッケージ、「azure-iot-sdk-python」をコンテナにインストールしたい

takeshita_kyouhei

2024年11月7日 15時17分

表題の通り、azure-iot-sdk-pythonについて、IoTGWG4のコンテナにインストールして使用したいです
通常のLinuxでは「pip install azure-iot-device」でインストール可能ですが、コンテナにインストールする場合はどのようにすればよいでしょうか?

packege.txtに「python3-azure-iot-device」や「python3-azure.iot.device」、「azure-iot-device」という風に定義してみましたがエラーとなってコンテナのビルドができませんでした

エラー内容は以下のとおりです

Reading state information...
E: Unable to locate package python3-azure.iot.device
E: Couldn't find any package by glob 'python3-azure.iot.device'
E: Couldn't find any package by regex 'python3-azure.iot.device'
Error: error building at STEP "RUN apt-get update && apt-get upgrade -y     && apt-get install -y ${PACKAGES}     && apt-get clean": error while running runtime: exit status 100
イメージをビルドできませんでした。

こちらを解決する方法はありますでしょうか?

コメント

at_satoshi.ohta

2024年11月7日 15時53分

太田です。

初めに1点確認したいのですが、
ABOSDEの [Python New Project] で作成したプロジェクトをご使用とのことでよろしいでしょうか?

takeshita_kyouhei

2024年11月7日 16時57分

> 太田です。
>
> 初めに1点確認したいのですが、
> ABOSDEの [Python New Project] で作成したプロジェクトをご使用とのことでよろしいでしょうか?
はい。
その手順で作成したプロジェクトなります

自動で生成されたpackege.txtへは必要なパッケージとして、「python3-pymodbus」や「python3-requests」などを記載しています

at_satoshi.ohta

2024年11月7日 17時25分

太田です。

ご返信ありがとうございます。
Pythonのプロジェクトをご使用とのことで了解です。

Pythonのプロジェクトでは、app ディレクトリ内に requirements.txt というファイルがあります。
pip でインストールするパッケージはこちらにご記載ください。
requirements.txt に「python3-pymodbus」や「python3-requests」などを記載していただいた後、
再度、[Generate development swu] を実行してみて頂いてもよろしいでしょうか?

どうぞよろしくお願いいたします。

takeshita_kyouhei

2024年11月7日 17時59分

> 太田です。
>
> ご返信ありがとうございます。
> Pythonのプロジェクトをご使用とのことで了解です。
>
> Pythonのプロジェクトでは、app ディレクトリ内に requirements.txt というファイルがあります。
> pip でインストールするパッケージはこちらにご記載ください。
> requirements.txt に「python3-pymodbus」や「python3-requests」などを記載していただいた後、
> 再度、[Generate development swu] を実行してみて頂いてもよろしいでしょうか?
>
> どうぞよろしくお願いいたします。
早速の返信有り難うございます

「python3-pymodbus」及び「python3-requests」はpackege.txtへの記載で問題なくコンテナビルドができているのですが、これらも同様にrequirements.txtへ記載するように変更したほうが良いのでしょうか?

packege.txtは現在、以下のように設定しています
 これにpython3-azure-iot-deviceを追記したらエラーになってしまった

python3
python3-pip
python3-requests
python3-pymodbus
curl
gpg
iptables
openntpd

at_satoshi.ohta

2024年11月7日 20時05分

太田です。

packages.txtの場合はaptでインストールされて、requirements.txtの場合はpipでインストールされます。
どちらにすればよいかはパッケージをaptで管理したいかpipで管理したいかによると思います。

requirements.txt に記述する場合は、

requests
pymodbus

と追記すればインストールされるはずです。

どうぞよろしくお願いいたします。

takeshita_kyouhei

2024年11月7日 21時07分

> > 太田です。
> >
> > ご返信ありがとうございます。
> > Pythonのプロジェクトをご使用とのことで了解です。
> >
> > Pythonのプロジェクトでは、app ディレクトリ内に requirements.txt というファイルがあります。
> > pip でインストールするパッケージはこちらにご記載ください。
> > requirements.txt に「python3-pymodbus」や「python3-requests」などを記載していただいた後、
> > 再度、[Generate development swu] を実行してみて頂いてもよろしいでしょうか?
> >
> > どうぞよろしくお願いいたします。
> 早速の返信有り難うございます
>
> 「python3-pymodbus」及び「python3-requests」はpackege.txtへの記載で問題なくコンテナビルドができているのですが、これらも同様にrequirements.txtへ記載するように変更したほうが良いのでしょうか?
>
> packege.txtは現在、以下のように設定しています
>  これにpython3-azure-iot-deviceを追記したらエラーになってしまった
>

> python3
> python3-pip
> python3-requests
> python3-pymodbus
> curl
> gpg
> iptables
> openntpd
> 

返信有り難うございます

apt、pipでの管理とありますが、それぞれどちらで管理したほうがいい、みたいな基準はありますでしょうか?
 こういったときはapt こういったときはpip、など

よろしくお願いいたします

アットマークテクノの古賀です。

takeshita_kyouheiさん(2024年11月7日 17時59分):
>>Pythonのプロジェクトでは、app ディレクトリ内に requirements.txt というファイルがあります。
>>pip でインストールするパッケージはこちらにご記載ください。

>packege.txtは現在、以下のように設定しています
> これにpython3-azure-iot-deviceを追記したらエラーになってしまった

python3
python3-pip
python3-requests
python3-pymodbus
curl
gpg
iptables
openntpd

azure-iot-device は、apt でインストール可能なパッケージが存在しないようですから、pip インストール用の requirements.txt に、

azure-iot-device

を追加してみてくださいませ:
 https://pypi.org/project/azure-iot-device/

at_satoshi.ohta

2024年11月8日 12時42分

太田です。

pipを使用するのであれば、pythonのパッケージ(pymodbusやrequests)に関しては
依存関係による競合の可能性を避けるためにpipでインストールするのが良いと思います。

どうぞよろしくお願いいたします。

takeshita_kyouhei

2024年11月12日 16時22分

> 太田です。
>
> pipを使用するのであれば、pythonのパッケージ(pymodbusやrequests)に関しては
> 依存関係による競合の可能性を避けるためにpipでインストールするのが良いと思います。
>
> どうぞよろしくお願いいたします。
上記回答いただきありがとうございました

Pythonパッケージについてはpipへまとめるようにします

本スレッドで聞きたいことは以上となります
ご対応いただきありがとうございました