YUN_O
@YUN_O (YUNN O))))

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

pythonのバージョンを切り替えるとADS1015が使えない

最近趣味でラズパイを触り始めた初心者です。
    Linux raspberrypi 6.6.22-v8+ #1746 SMP PREEMPT Wed Mar 20 17:19:49 GMT 2024 aarch64 GNU/Linux
    Model : Raspberry Pi 4 Model B Rev 1.4
となっています。

まずやりたい事は、ADS1015で取得した値をKivyでGUI表示などをすることを、最初の目標にやっております。

最初に入っていたpythonバージョンはPython 3.11.2なのですが、Kivyが動かないみたいなので、pyenvというものをインストールして、Python 3.9.11 で実行するようにしました。

まず、Python 3.9.11でkivyのウィンドウを開くことはできました。
ですがads = Adafruit_ADS1x15.ADS1015()でエラーがでてしまいます。

Python 3.11.2で下記を実行すると、ちゃんとアナログ値の読み取りはできるみたいです。

import time
import Adafruit_ADS1x15

#ADS1015を初期化
ads = Adafruit_ADS1x15.ADS1015()
GAIN = 1 #ゲインを1(±4.096V)に設定
RANGE = 4.096 * 2
UNIT = RANGE / 4096

#ADSのアナログ入力ピン指定
ads1015_pin = 0 #ch0を設定

#ADC読み出しを100回ループ
for i in range(100):
data = 0
volt = 0

#ADS1015からデータを読み出し
data = ads.read_adc(ads1015_pin, gain=GAIN)

#電圧値を計算
volt = data * UNIT

print("受信データ:" + str(data))

print("電圧 :" + "{:.3f}".format(volt))

#0.5秒待機
time.sleep(0.5)

print("done.")

Python 3.9.11で実行すると、下記のエラーがでます。

Traceback (most recent call last):
File "/home/yuta/ADS1015_test2.py", line 5, in
ads = Adafruit_ADS1x15.ADS1015()
File "/home/yuta/Adafruit_ADS1x15/ADS1x15.py", line 343, in init
super(ADS1015, self).init(*args, **kwargs)
File "/home/yuta/Adafruit_ADS1x15/ADS1x15.py", line 80, in init
import Adafruit_GPIO.I2C as I2C
ModuleNotFoundError: No module named 'Adafruit_GPIO'

どう対処したらよいか教えてください。

0

1Answer

ModuleNotFoundError: No module named 'Adafruit_GPIO'

Python 3.9.11 の環境に、'Adafruit_GPIO'が無いのが原因では?

pipでインストールしたと思いますが、Pythonの環境ごとに必要だと思います。

Python 3.9.11 の環境に切り替えておいて、必要なライブラリを
python -m pip install ライブラリ
でインストールしてみてください。

0Like

Comments

  1. @YUN_O

    Questioner

    ご回答ありがとうございます。

    sudo python -m pip install Adafruit_GPIO
    としたところ、
    error: externally-managed-environment

    × This environment is externally managed
    ╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    となりました。

    なぜか、pip installをしようとすると、すべて上記のエラーとなります。

    初心者の為、なにがなんやらわかっていません。

  2. 以下のコマンドを、Python 3.11.2 と Python 3.9.11 の環境でそれぞれ実行して結果を貼ってください。

    $ pyenv --version
    
    $ pyenv versions
    
    $ python --version
    
    $ pip --version
    
    $ pip list
    
  3. 追伸;

    pyenvというものをインストールして、Python 3.9.11 で実行するようにしました。

    pyenvをインストールしたときに、参考にした手順やサイトはどこでしょうか?

  4. OS は、bookworm ですか? lsb_release -a で確認できます。

    bookwormからpipインストールでエラーが起こるようで、
    --break-system-packagesオプションが必要みたいです。

    sudoは不要です。

    python -m pip install --break-system-packages ライブラリ
    
  5. @YUN_O

    Questioner

    上記の結果は下記でした。

    Python 3.9.11 の時

    pyenv --version
    pyenv 2.3.36-21-g7e550e31

    pyenv versions
    system

    • 3.9.11 (set by /home/yuta/.pyenv/version)

    python --version
    Python 3.9.11

    pip --version
    pip 22.0.4 from /home/yuta/.pyenv/versions/3.9.11/lib/python3.9/site-packages/pip (python 3.9)

    pip list
    Package Version


    certifi 2024.2.2
    charset-normalizer 3.3.2
    contourpy 1.2.0
    cycler 0.12.1
    docutils 0.20.1
    fonttools 4.50.0
    idna 3.6
    importlib_resources 6.4.0
    Kivy 2.3.0
    Kivy-examples 2.3.0
    Kivy-Garden 0.1.5
    kiwisolver 1.4.5
    matplotlib 3.8.3
    numpy 1.26.4
    packaging 24.0
    pillow 10.2.0
    pip 22.0.4
    Pygments 2.17.2
    pyparsing 3.1.2
    python-dateutil 2.9.0.post0
    requests 2.31.0
    setuptools 58.1.0
    six 1.16.0
    urllib3 2.2.1
    zipp 3.18.1
    WARNING: You are using pip version 22.0.4; however, version 24.0 is available.
    You should consider upgrading via the '/home/yuta/.pyenv/versions/3.9.11/bin/python3.9 -m pip install --upgrade pip' command.

    Python 3.11.2の時

    pyenv --version
    pyenv 2.3.36-21-g7e550e31

    pyenv versions

    • system (set by /home/yuta/.pyenv/version)
      3.9.11

    python --version
    Python 3.11.2

    pip --version
    pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11)

    pip list
    Package Version


    Adafruit-ADS1x15 1.0.2
    Adafruit-ADS1x15 1.0.2
    Adafruit-ADS1x15 1.0.2
    Adafruit-GPIO 1.0.3
    Adafruit-MCP3008 1.0.2
    Adafruit-MCP3008 1.0.2
    Adafruit-MCP3008 1.0.2
    Adafruit-PureIO 1.1.11
    arandr 0.1.11
    asgiref 3.6.0
    astroid 2.14.2
    asttokens 2.2.1
    av 10.0.0
    Babel 2.10.3
    beautifulsoup4 4.11.2
    blinker 1.5
    certifi 2022.9.24
    chardet 5.1.0
    charset-normalizer 3.0.1
    click 8.1.3
    colorama 0.4.6
    colorzero 2.0
    cryptography 38.0.4
    cupshelpers 1.0
    dbus-python 1.3.2
    dill 0.3.6
    distro 1.8.0
    docutils 0.19
    Flask 2.2.2
    gpiozero 2.0
    html5lib 1.1
    idna 3.3
    importlib-metadata 4.12.0
    isort 5.6.4
    itsdangerous 2.1.2
    jedi 0.18.2
    Jinja2 3.1.2
    lazy-object-proxy 1.9.0
    lgpio 0.2.2.0
    libevdev 0.5
    logilab-common 1.9.8
    lxml 4.9.2
    MarkupSafe 2.1.2
    mccabe 0.7.0
    meson 1.0.1
    more-itertools 8.10.0
    mypy 1.0.1
    mypy-extensions 0.4.3
    numpy 1.24.2
    oauthlib 3.2.2
    olefile 0.46
    parso 0.8.3
    pexpect 4.8.0
    pgzero 1.2
    picamera2 0.3.17
    pidng 4.0.9
    piexif 1.1.3
    pigpio 1.78
    Pillow 9.4.0
    pip 23.0.1
    platformdirs 2.6.0
    psutil 5.9.4
    ptyprocess 0.7.0
    pycairo 1.20.1
    pycups 2.0.1
    pygame 2.1.2
    Pygments 2.14.0
    PyGObject 3.42.2
    pyinotify 0.9.6
    PyJWT 2.6.0
    pylint 2.16.2
    PyOpenGL 3.1.6
    pyOpenSSL 23.0.0
    PyQt5 5.15.9
    PyQt5-sip 12.11.1
    pyserial 3.5
    pysmbc 1.0.23
    python-apt 2.6.0
    python-dotenv 0.21.0
    python-prctl 1.8.1
    pytz 2022.7.1
    pyudev 0.24.0
    PyYAML 6.0
    reportlab 3.6.12
    requests 2.28.1
    requests-oauthlib 1.3.0
    responses 0.18.0
    roman 3.3
    RPi.GPIO 0.7.1a4
    RTIMULib 7.2.1
    Send2Trash 1.8.1b0
    sense-hat 2.6.0
    setuptools 66.1.1
    simplejpeg 1.6.6
    simplejson 3.18.3
    six 1.16.0
    smbus2 0.4.2
    soupsieve 2.3.2
    spidev 3.5
    ssh-import-id 5.10
    thonny 4.1.4
    toml 0.10.2
    tomlkit 0.11.7
    twython 3.8.2
    types-aiofiles 22.1
    types-annoy 1.17
    types-appdirs 1.4
    types-aws-xray-sdk 2.10
    types-babel 2.11
    types-backports.ssl-match-hostname 3.7
    types-beautifulsoup4 4.11
    types-bleach 5.0
    types-boto 2.49
    types-braintree 4.17
    types-cachetools 5.2
    types-caldav 0.10
    types-certifi 2021.10.8
    types-cffi 1.15
    types-chardet 5.0
    types-chevron 0.14
    types-click-spinner 0.1
    types-colorama 0.4
    types-commonmark 0.9
    types-console-menu 0.7
    types-contextvars 2.4
    types-croniter 1.3
    types-cryptography 3.3
    types-D3DShot 0.1
    types-dateparser 1.1
    types-DateTimeRange 1.2
    types-decorator 5.1
    types-Deprecated 1.2
    types-dj-database-url 1.0
    types-docopt 0.6
    types-docutils 0.19
    types-editdistance 0.6
    types-emoji 2.1
    types-entrypoints 0.4
    types-first 2.0
    types-flake8-2020 1.7
    types-flake8-bugbear 22.10.27
    types-flake8-builtins 2.0
    types-flake8-docstrings 1.6
    types-flake8-plugin-utils 1.3
    types-flake8-rst-docstrings 0.2
    types-flake8-simplify 0.19
    types-flake8-typing-imports 1.14
    types-Flask-Cors 3.0
    types-Flask-SQLAlchemy 2.5
    types-fpdf2 2.5
    types-gdb 12.1
    types-google-cloud-ndb 1.11
    types-hdbcli 2.14
    types-html5lib 1.1
    types-httplib2 0.21
    types-humanfriendly 10.0
    types-invoke 1.7
    types-JACK-Client 0.5
    types-jmespath 1.0
    types-jsonschema 4.17
    types-keyboard 0.13
    types-ldap3 2.9
    types-Markdown 3.4
    types-mock 4.0
    types-mypy-extensions 0.4
    types-mysqlclient 2.1
    types-oauthlib 3.2
    types-openpyxl 3.0
    types-opentracing 2.4
    types-paho-mqtt 1.6
    types-paramiko 2.11
    types-parsimonious 0.10
    types-passlib 1.7
    types-passpy 1.0
    types-peewee 3.15
    types-pep8-naming 0.13
    types-Pillow 9.3
    types-playsound 1.3
    types-polib 1.1
    types-prettytable 3.4
    types-protobuf 3.20
    types-psutil 5.9
    types-psycopg2 2.9
    types-pyaudio 0.2
    types-PyAutoGUI 0.9
    types-pycurl 7.45
    types-pyfarmhash 0.3
    types-pyflakes 2.5
    types-Pygments 2.13
    types-pyinstaller 5.6
    types-PyMySQL 1.0
    types-pynput 1.7
    types-pyOpenSSL 22.1
    types-pyRFC3339 1.1
    types-PyScreeze 0.1
    types-pysftp 0.2
    types-pytest-lazy-fixture 0.6
    types-python-crontab 2.6
    types-python-dateutil 2.8
    types-python-gflags 3.1
    types-python-jose 3.3
    types-python-nmap 0.7
    types-python-slugify 6.1
    types-pytz 2022.6
    types-pyvmomi 7.0
    types-pywin32 304
    types-PyYAML 6.0
    types-redis 4.3
    types-regex 2022.10.31
    types-requests 2.28
    types-retry 0.9
    types-Send2Trash 1.8
    types-setuptools 65.5
    types-simplejson 3.17
    types-singledispatch 3.7
    types-six 1.16
    types-slumber 0.7
    types-SQLAlchemy 1.4.43
    types-stdlib-list 0.8
    types-stripe 3.5
    types-tabulate 0.9
    types-termcolor 1.1
    types-toml 0.10
    types-toposort 1.7
    types-tqdm 4.64
    types-tree-sitter 0.20
    types-tree-sitter-languages 1.5
    types-ttkthemes 3.2
    types-typed-ast 1.5
    types-tzlocal 4.2
    types-ujson 5.5
    types-urllib3 1.26
    types-vobject 0.9
    types-waitress 2.1
    types-whatthepatch 1.0
    types-xmltodict 0.13
    types-xxhash 3.0
    types-zxcvbn 4.4
    typing_extensions 4.4.0
    urllib3 1.26.12
    v4l2-python3 0.3.3
    webencodings 0.5.1
    Werkzeug 2.2.2
    wheel 0.38.4
    wrapt 1.14.1
    zipp 1.0.0

    OS は、

    lsb_release -a
    No LSB modules are available.
    Distributor ID: Debian
    Description: Debian GNU/Linux 12 (bookworm)
    Release: 12
    Codename: bookworm

    でした。

  6. @YUN_O

    Questioner

    pyenvをインストールしたときの参考サイトは、色々開いて見ていたため、わからなくなってしまいました。

    Python 3.9.11の状態で、下記実行してみました。

    python -m pip install --break-system-packages Adafruit-GPIO

    Usage:
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] [package-index-options] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] -r [package-index-options] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] [-e] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] [-e] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] ...

    no such option: --break-system-packages

    python -m pip install --break-system-packages Adafruit-ADS1x15

    Usage:
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] [package-index-options] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] -r [package-index-options] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] [-e] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] [-e] ...
    /home/yuta/.pyenv/versions/3.9.11/bin/python -m pip install [options] ...

    no such option: --break-system-packages

    となりました。

  7. 自分の Raspi 4 に bookworm をインストールして、pyenv もインストールして試してみました。

    • OS標準のPython
    $ python -V
    Python 3.11.2
    
    $ python -m pip -V
    pip 23.0.1 from /usr/lib/python3/dist-packages/pip (python 3.11)
    
    $ python -m pip install Adafruit-GPIO
    error: externally-managed-environment
    
    × This environment is externally managed
    ╰─> To install Python packages system-wide, try apt install
        python3-xyz, where xyz is the package you are trying to
        install.    
    (以下、省略)
    

    確かに bookworm だとエラーが出ます。そこで、--break-system-packages オプションを指定して、無事にインストール出来ました。

    $ python -m pip install --break-system-packages Adafruit-GPIO
    Defaulting to user installation because normal site-packages is not writeable
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Collecting Adafruit-GPIO
    (以下、省略)
    

    • pyenvでPython 3.9.11 に切り替え
    $ pyenv shell 3.9.11
    $ python -V 
    Python 3.9.11
    $ pip -V 
    pip 22.0.4 from /home/pi44/.pyenv/versions/3.9.11/lib/python3.9/site-packages/pip (python 3.9)
    $ pip list
    Package    Version
    ---------- -------
    pip        22.0.4
    setuptools 58.1.0
    

    --break-system-packages オプションを指定するとオプションがエラー

    python -m pip install --break-system-packages Adafruit-GPIO
    
    Usage:   
    (途中省略)
    
    no such option: --break-system-packages
    

    --break-system-packages オプション無しでインストール

    $ python -m pip install Adafruit-GPIO
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Collecting Adafruit-GPIO
      Using cached https://www.piwheels.org/simple/adafruit-gpio/Adafruit_GPIO-1.0.3-py3-none-any.whl (38 kB)
    (途中省略)
    Installing collected packages: spidev, adafruit-pureio, Adafruit-GPIO
    Successfully installed Adafruit-GPIO-1.0.3 adafruit-pureio-1.1.11 spidev-3.6
    WARNING: You are using pip version 22.0.4; however, version 24.0 is available.
    You should consider upgrading via the '/home/pi44/.pyenv/versions/3.9.11/bin/python -m pip install --upgrade pip' command.
    

    普通に問題なくインストールできました!!

    当方の環境;

    $ cat /proc/device-tree/model
    Raspberry Pi 4 Model B Rev 1.5
    
    $ uname -a
    Linux raspberrypi44 6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux
    
    $ lsb_release -a
    No LSB modules are available.
    Distributor ID:	Debian
    Description:	Debian GNU/Linux 12 (bookworm)
    Release:	12
    Codename:	bookworm
    

    pyenv のインストール方法

    コマンドのみ
    $ sudo apt install -y git
    $ sudo curl https://pyenv.run | bash
    $ pyenv --version
    pyenv 2.3.36
    

    Python 3.9.11 のインストール方法

    コマンドのみ
    $ sudo apt install -y libbz2-dev libncurses5-dev libffi-dev libreadline-dev libssl-dev libsqlite3-dev liblzma-dev
    $ pyenv install 3.9.11
    $ pyenv --version
    pyenv 2.3.36
    $ pyenv versions
    * system (set by /home/pi44/.pyenv/version)
      3.9.11
    $ pyenv shell 3.9.11
    $ python -V 
    Python 3.9.11
    
  8. @YUN_O

    Questioner

    python3.9.11で
    python -m pip install Adafruit-GPIO
    でやってみたところ、なんとインストールできました!

    pyenvで3.9.11状態では
    sudo python -m pip install Adafruit_GPIO
    だと、だめでしたので、sudoをつけてはだめという事?のようでした。

    標準の3.11.2状態で、
    最初インストールした時は、多分
    sudo pip install --break-system-packages Adafruit-GPIO
    でインストールできたんだったと思います。

    一番最初にコメントいただいたものを、コピペしていれば、いけてたんですね。
    お手間とらせてしまい、申し訳ありません。

  9. sudoは基本は不要なはずです。
    解決されたのであれば、当Q&Aをクローズしてください。

Your answer might help someone💌