Problema importazione da una libreria

di il
6 risposte

Problema importazione da una libreria

Ciao a tutti!
Questo è il mio primo topic aperto, e premetto che sono totalmente inesperto. Per necessità dovute al mio lavoro di tesi magistrale (astrofisica) mi sono dovuto avvicinare alla programmazione in python. Vi presento il mio problema. Durante la scrittura di uno script devo importare un modulo ("sed") di una specifica libreria ("barak") e utilizzo il comando:

import barak.sed as ss

a questo punto mi segnala un errore del tipo:

---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-34-0b9d6c48b813> in <module>
4 import astropy.io.fits as pyfits
5 import pickle
----> 6 import barak.sed as ss
7 from astropy.coordinates import SkyCoord, funcs
8 from astropy.wcs import WCS

~/ENTER/envs/snowflakes/lib/python3.8/site-packages/barak/sed.py in <module>
10 """
11 from __future__ import division
---> 12 from io import readtabfits
13 from constants import c, c_kms, Jy
14 from utilities import get_data_path

ImportError: cannot import name 'readtabfits' from 'io' (/home/gabriele/ENTER/envs/snowflakes/lib/python3.8/io.py)

Come evidente non riesce ad importare 'readtabs' da 'io'. Questa cosa è dovuta al fatto che JupyterLab va a prendere un io.py differente da quello in cui è presente il modulo che deve importare. Infatti ho notato che sul mio pc vi sono due file io.py (in due cartelle differenti), uno che non ho ben capito da dove venga (ricordate, sono totalmente inesperto!) e che è nel percorso segnalato dall'errore e l'altro che è invece nella cartella della libreria barak (che è quello che io vorrei che sia letto). Ho provato a cambiare i vari script della libreria "barak" (ho provato a chiamare io.py diversamente e anche a modificare nel modulo "sed" la chiamata di io.py), ma non ottenendo successo o riportato tutto alle condizioni iniziali. Non ho voluto modificare l'altro io.py perché è una cosa che non ho installato consapevolemente o per necessità e che è nella cartella python3.8, quindi immagino che sia più delicato e ho evitato di toccarlo. Qualcuno saprebbe aiutarmi? È possibile "forzare" l'importazione da un percorso da me specificato?

Grazie a chi mi dedicherà attenzione.

6 Risposte

  • Re: Problema importazione da una libreria

    Devi usare python 2.7
  • Re: Problema importazione da una libreria

    Grazie per la risposta! Ma riscontro un problema. Se apro i miei Jupyter notebook i kernel a disposizione sono solo di tipo yython 3. Con Anaconda ho provato a creare un nuovo ambiente con python 2.7 (erano presenti già uno con python 3.5 e uno con python 3., ma se sono dentro questo nuovo ambiente non mi fa lanciare i notebook, dicendomi che ci sono degli errori. Cosa sbaglio?
  • Re: Problema importazione da una libreria

    Non sbagli nulla!

    Semplicemente ""non si puo' fare""!

    Se non ""convertendo"" (a ""manina"" ) la libreria da Python 2 a Python 3
    Niente di impossibile, solo ""rognoso"".

    Python, essendo ""open source"" e' ""bello e buono"", "a gratis", ma ""paghi"" in compatibilita' e rogne del genere.
    Come si suol dire: "non si puo' avere la botte piena e la moglie ubriaca" o, con terminologia piu' tecnica, soddisfa il "no free launch theorem"

    https://en.wikipedia.org/wiki/No_free_lunch_theore


  • Re: Problema importazione da una libreria

    Capisco.
    Ma cosa intendi con ''convertire a mano'' precisamente? Questa cosa è da fare nell'ambiente in cui c'è python2.7?
    Come scritto inizialmente, non ho esperienza di alcun tipo. Sono tutte cose nuove per me.
  • Re: Problema importazione da una libreria

    Devi convertire la libreria in modo che sia compatibile con Python 3.X

    Per fare questo e' necessario analizzare OGNI RIGA di OGNI SORGENTE della libreria e CONTROLLARE SE quello che fa e' COMPATIBILE con Python 3.X.

    In generale lo e'

    MA NON TUTTO

    Esempi sono:

    - librerie che hanno cambiato nome
    - funzioni che hanno cambiato nome
    - funzioni che sono state rimosse (come nel tuo caso)
    - cambiamenti di sintassi

    Hai appena scoperto che quello che sai e' un'""infinitesima parte"" di quello che dovresti sapere.

    E quello che non sai comprende le VERE conoscenze

    Serve a poco conoscere la teoria della gravitazione universale, SE poi non sei in grado di calcolare l'orbita di un buco nero di 10 cm che ""orbita"" attorno alla Terra (o sara' il contrario? )
  • Re: Problema importazione da una libreria

    Ti ringrazio per il chiarimento!
Devi accedere o registrarti per scrivere nel forum
6 risposte