Kirjoittaja Aihe: Python3, numpy-ongelma  (Luettu 3910 kertaa)

Rjstudio

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Python3, numpy-ongelma
« : 23.03.24 - klo:16.28 »
Moro,
Seuraavan ongelman suhteen olen täydellinen aloittelija.
Törmäsin seuraavanlaiseen ongelmaan (liittyy ctcsound'n käyttämään import'tiin):

from numpy.core._multiarray_umath import (
ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'

Googlesta löytyi kyllä erinäköisiä ehdotuksia em. ongelmaan, joka on ilmeisesti tullut vastaan monellekin.
Periaatteessa ehdotettiin uudelleenasennusta (pip unsinstall/install).
Ropleema tulee siitä, että numpy tulee jo Xubuntu 22.04 perusasennuksen mukana (näkyy vaikka Synaptic'ssa).
Siitä taas seuraa, ettei komentorivin pip suostu poistamaan asennusta eli siis myöskään uudelleenasennus ei onnistu.
Synaptic'n puolella taas tulee vastaan, että jos paketin poistaisi siksi, että sen voisi asentaa uudestaan pip'llä,
syystä tai toisesta poiston mukana lähtisi muitakin ohjelmia, eli sitäkään ei oikein viitsi kokeilla.

Olisko ehdotuksia miten pääsisin eteenpäin ?
Onko sama ongelma tullut muilla numpy'n käyttäjillä vastaan ?

Sen verran lisätietoa, että .../numpy/core-hakemistosta löytyy .so-tiedosto
_multiarray_umath.cpython-310-x86_64-linux-gnu.so,
jonka sisuksissa tuo haluttu funktio ilmeisesti majailee.



kamara

  • Käyttäjä
  • Viestejä: 3026
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #1 : 23.03.24 - klo:17.10 »
Onko mahdollista asentaa numpy-versio virtuaalikoneeseen ?

Silloin ei ole merkitystä pääkoneella, mitä viritelmiä on virtuaalikoneessa.

SuperOscar

  • Käyttäjä
  • Viestejä: 4059
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Python3, numpy-ongelma
« Vastaus #2 : 23.03.24 - klo:17.32 »
Onko mahdollista asentaa numpy-versio virtuaalikoneeseen ?

Helpompaa ja nykyisin suositeltuakin olisi käyttää virtuaaliympäristöä, jonka koostumusta voisi sitten mielin määrin säätää ilman pelkoa haitanteosta järjestelmälle.

Periaatteessa tarvitaan vain:

Koodia: [Valitse]
sudo apt install python3-venv
mkdir /jokin/sopiva/kansio
python3 -m venv /jokin/sopiva/kansio

Sitten Python käyntiin tuolta: /jokin/sopiva/kansio/bin/python3. Skriptien #!-riville tietty sama muutos.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

Rjstudio

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #3 : 24.03.24 - klo:11.20 »
Täytyy tutustua tuohon virtuaaliympäristöön mitä se oikein  tarkoittaa. Ilmeisesti siis erillinen kopio koko python-ympäristöstä ?

Yksi ihmetyksen aihe mulla on olemassaolevassa python-pakettien asennuksessa.
Siellähän on siis numpy asennettuna, mutta se on tullut siis yleisen pakettienhallinnan mukana, ei pip'llä asennettuna.
Nyt ne ohjelmat, joilla Synaptic'n mukaan on riippuvuus numpy'stä, toimii kuitenkin ilman rutinaa.
Nyt sitten tuore python-koodi IDLE'llä ajettuna taas antaa tuon virheilmoituksen.

Eli toisessa tapauksessa ei valitusta, toisessa kyllä. Yhtäkkiä ajatellen aika outoa.

ilkant

  • Käyttäjä
  • Viestejä: 1371
  • Kubuntu
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #4 : 24.03.24 - klo:15.09 »
Kiitokset minulta tuon venvin selvittämisestä. On ollut tarkoitus tutustua siihen, miten se toimii. Ajanpuutteen vuoksi ei ole pythonilla tullut tehtyä vähään aikaan mitään.

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11480
    • Profiili
    • Tomin kotisivut
Vs: Python3, numpy-ongelma
« Vastaus #5 : 24.03.24 - klo:15.17 »
Eli toisessa tapauksessa ei valitusta, toisessa kyllä. Yhtäkkiä ajatellen aika outoa.

Ei oikeastaan. Todennäköisesti ne ohjelmat, jotka tulevat pakettivarastoissa ja joille kelpaa järjestelmän numpy eivät sisällä tuota koodia, jonka mainitsit ekassa viestissäsi. Ja lisäksi, jos poistaisit järjestelmän numpy-asennuksen, niin tietenkin siitä riippuvat ohjelmat myös poistettaisiin.

Tuossa viestin koodissa näköjään "importataan" jokin numpyn sisäinen nimi (huomaa alaviiva pisteen jälkeen!), joten ei ole ihmekään, että se voi toimia yhdellä numpyn versiolla ja olla toimimatta toisella. Kannatan, että kokeilet tuota venv-ympäristössä sellaisella numpyn versiolla, jonka pitäisi toimia.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Rjstudio

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #6 : 25.03.24 - klo:13.58 »
Python-aloittelija kun olen, niin se ilmeisin kokeilu oli tekemättä. Ajoin siis pythonkoodin suoraan komentoriviltä ja se toimi ihan ilman valituksia.

Nyt se oikea ongelma onkin IDLE, jossa koodin ajo kaatuu tuohon em. kohtaan.
Eikö se saa polkua oikein tuohon kirjastoon vai mistä voisi olla kysymys ?


En löytänyt sen asetuksista (Options) paikkaa missä voisi asetella polkuja kirjastoihin (vrt. Eclipse ja javan jar-paketit),
mutta pitäiskö normaalitapauksessa niitä edes tarvita ?

Ilmeisesti (taas aloittelija ...) mun olisi pitänyt  kopioida koko vikarimpsu. ehkä siitä selviää paremmin, miksi IDLEn kanssa on ongelmia?

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 22, in <module>
    from . import multiarray
  File "/usr/lib/python3/dist-packages/numpy/core/multiarray.py", line 12, in <module>
    from . import overrides
  File "/usr/lib/python3/dist-packages/numpy/core/overrides.py", line 7, in <module>
    from numpy.core._multiarray_umath import (
ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.11/idlelib/run.py", line 578, in runcode
    exec(code, self.locals)
  File "/home/risto/ex_rk.py", line 17, in <module>
    import ctcsound
  File "/usr/lib/python3/dist-packages/ctcsound.py", line 26, in <module>
    import numpy as np
  File "/usr/lib/python3/dist-packages/numpy/__init__.py", line 150, in <module>
    from . import core
  File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 48, in <module>
    raise ImportError(msg)
ImportError:

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.11 from "/usr/bin/python3.11"
  * The NumPy version is: "1.21.5"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: No module named 'numpy.core._multiarray_umath'


nm

  • Käyttäjä
  • Viestejä: 16416
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #7 : 25.03.24 - klo:15.42 »
  * The Python version is: Python3.11 from "/usr/bin/python3.11"
  * The NumPy version is: "1.21.5"

IDLE on konfiguroitu käyttämään Pythonin versiota 3.11, kun taas Ubuntu 22.04:ssä on vakiona Python 3.10 ja Apt-lähteistä asennettu python3-numpy-paketti toimii kunnolla vain Python3.10:n kanssa. Ongelma johtuu siis siitä, että järjestelmään asennettu Numpy ei ole yhteensopiva kehitysympäristön käyttämän Python-version kanssa.

Ratkaisuvaihtoehtoja:

A. Asenna Numpy Python 3.11:lle. Tämä ei sekoita järjestelmän Python 3.10:tä  ja sen kirjastoja käyttävien sovellusten toimintaa:

Koodia: [Valitse]
python3.11 -m pip --user install numpy
B. Aseta IDLE käyttämään järjestelmän Python 3.10:tä (/usr/bin/python3 tai /usr/bin/python3.10).

C. Käynnistä IDLE venv-ympäristössä, johon olet asentanut Numpyn ja muut tarvittavat riippuvuudet.
« Viimeksi muokattu: 25.03.24 - klo:15.44 kirjoittanut nm »

Rjstudio

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #8 : 25.03.24 - klo:17.54 »
Toi A. kuulosti hyvältä, mutta väittää:

Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.21.5)

Mutta tuo ilmoitus viittaa kumminkin yleiseen (?) python3-hakemistoon, eikä python3.11'een.

Ainoastaan python3'sta löytyy löytyy dist-packages-hakemisto, jos sillä on jotain merkitystä.
Sitten yksityiskohta, annoin --user-option komennon loppuun eikä tuonne väliin, koska annetulla tavalla ei mennyt läpi.
Suoraan kopioidussa muodossa valittaa seuraavaa, eli haluaa optiot loppuun:
Usage:   
  /usr/bin/python3.11 -m pip <command> [options]

no such option: --user

En tiedä onko merkitystä ?

Entäs B. sitten ? T.s. missähän IDLE'n python-versio asetetaan ? Ei löydy Configure-IDLE-napin takaa.

C. on vielä ihmettelyvaiheessa, koska kuvittelen, että pärjään muuten ihan peruskirjastoilla yms.

nm

  • Käyttäjä
  • Viestejä: 16416
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #9 : 25.03.24 - klo:22.28 »
Toi A. kuulosti hyvältä, mutta väittää:

Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.21.5)

Mutta tuo ilmoitus viittaa kumminkin yleiseen (?) python3-hakemistoon, eikä python3.11'een.

Ainoastaan python3'sta löytyy löytyy dist-packages-hakemisto, jos sillä on jotain merkitystä.
Sitten yksityiskohta, annoin --user-option komennon loppuun eikä tuonne väliin, koska annetulla tavalla ei mennyt läpi.
Suoraan kopioidussa muodossa valittaa seuraavaa, eli haluaa optiot loppuun:
Usage:   
  /usr/bin/python3.11 -m pip <command> [options]

no such option: --user

En tiedä onko merkitystä ?

Joo, --user tulee tosiaan installin jälkeen. Asennusta voisi yrittää pakottaa --ignore-installed -vivulla:

Koodia: [Valitse]
python3.11 -m pip install --user --ignore-installed numpy
Apt:n kautta asennetut Python-kirjastot ovat kyllä aika hankalia, kun ne päätyvät tuonne yleiseen /usr/lib/python3-hakemistoon sen sijaan että olisivat kohdennettu tarkemmin tietylle Pythonin versiolle.


Entäs B. sitten ? T.s. missähän IDLE'n python-versio asetetaan ? Ei löydy Configure-IDLE-napin takaa.

Voi olla, että IDLE on sidottu kiinteästi tiettyyn Pythonin versioon. Muistatko, miten olet asentanut tuon Python 3.11:n IDLE:n? Apt:lla saa paketin idle3, joka näyttää käyttävän Ubuntu 22.04:ssä Python 3.10:tä.

Rjstudio

  • Käyttäjä
  • Viestejä: 23
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #10 : 27.03.24 - klo:10.22 »
Kiitoksia !

Poistin siis idle 3.11-version ja asensin tilalle 3.10-version ja nyt pelittää niin kuin pitääkin.

Ovat siis Ubuntulla päättäneet pistää perusjakeluun apt'n kautta joitakin paketteja python'sta ja
loput menkööt python'in omien työkalujen kautta. Näyttää siis johtavan jonkunlaiseen sekavuuteen ?
Noin yhtäkkiä tuntuisi fiksummalta, että apt'n kautta tulisi pelkkä perus-python ja loput
jonkun python-skriptin kautta, joka asentaa lisäpaketit.
Mutta varmaan siitäkin jonkun sotkun saisi aikaiseksi, eli eipä taida olla mitään patenttiratkaisua ongelmaan.

nm

  • Käyttäjä
  • Viestejä: 16416
    • Profiili
Vs: Python3, numpy-ongelma
« Vastaus #11 : 27.03.24 - klo:10.34 »
Kiitoksia !

Poistin siis idle 3.11-version ja asensin tilalle 3.10-version ja nyt pelittää niin kuin pitääkin.

Hyvä että lähti toimimaan!

Ovat siis Ubuntulla päättäneet pistää perusjakeluun apt'n kautta joitakin paketteja python'sta ja
loput menkööt python'in omien työkalujen kautta. Näyttää siis johtavan jonkunlaiseen sekavuuteen ?
Noin yhtäkkiä tuntuisi fiksummalta, että apt'n kautta tulisi pelkkä perus-python ja loput
jonkun python-skriptin kautta, joka asentaa lisäpaketit.

Numpy ja vastaavat tiettyyn Pythonin versioon sidotut kirjastot pitäisi asentaa versiokohtaiseen polkuun, jotta ne eivät sotke muiden Python-versioiden toimintaa. En osaa sanoa, miksei Ubuntun (ja Debianin) apt-paketeissa ole tehty niin. Se auttaisi näissä ongelmissa jo aika paljon. Pipillä erikseen asennetut kirjastot menevät aina tarkkasti versioituihin polkuihin.