[Risolto] [Python] module object is not callable

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
hey_tuco
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 257
Iscrizione: venerdì 11 marzo 2011, 18:50
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

[Risolto] [Python] module object is not callable

Messaggio da hey_tuco »

Salve,

non so come risolvere l'errore: 'module' object is not callable.
Caso semplicissimo: generazione di un numero casuale.

Contenuto del file cas.py:

Codice: Seleziona tutto

import random

x=random.random()

print("numero casuale reale:",x)
esecuzione da terminale:

Codice: Seleziona tutto

~/prova$ python cas.py
Traceback (most recent call last):
  File "cas.py", line 1, in <module>
    import random
  File "/home/x/prova/random.py", line 3, in <module>
    x=random.random()
TypeError: 'module' object is not callable
~/prova$ 

 
Dove può essere il problema?
Grazie,

t.
Ultima modifica di hey_tuco il giovedì 24 giugno 2021, 3:53, modificato 2 volte in totale.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Python] module object is not callable

Messaggio da vaeVictis »

Codice: Seleziona tutto

~/prova$ python cas.py
Traceback (most recent call last):
  File "cas.py", line 1, in <module>
    import random
  File "/home/x/prova/random.py", line 3, in <module>
    x=random.random()
TypeError: 'module' object is not callable
~/prova$ 
Da questa riga:

Codice: Seleziona tutto

  File "/home/x/prova/random.py", line 3, in <module>
sembra che stia importando il file di cui ti mostra il percorso, invece del file corrispondente al modulo di Python.
Il problema dovrebbe essere qui. Cambia nome al file indicato in quel percorso, e in generale non dare nomi di moduli standard a file generici.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
hey_tuco
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 257
Iscrizione: venerdì 11 marzo 2011, 18:50
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Re: [Python] module object is not callable

Messaggio da hey_tuco »

vaeVictis ha scritto:
mercoledì 23 giugno 2021, 23:52

Codice: Seleziona tutto

~/prova$ python cas.py
Traceback (most recent call last):
  File "cas.py", line 1, in <module>
    import random
  File "/home/x/prova/random.py", line 3, in <module>
    x=random.random()
TypeError: 'module' object is not callable
~/prova$ 
Da questa riga:

Codice: Seleziona tutto

  File "/home/x/prova/random.py", line 3, in <module>
sembra che stia importando il file di cui ti mostra il percorso, invece del file corrispondente al modulo di Python.
Il problema dovrebbe essere qui. Cambia nome al file indicato in quel percorso, e in generale non dare nomi di moduli standard a file generici.
Ciao,
ora funziona:

Codice: Seleziona tutto

~/prova$ python cas.py
('numero casuale reale:', 0.9794671319221006)
~/prova$ 
Nella cartella /home/x/prova in effetti c'era un file inutile random.py che ignoravo, l'ho cancellato e adesso cas.py funziona. Era quello, faceva casino.
Grazie,

t.
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Risolto] [Python] module object is not callable

Messaggio da crap0101 »

così per curiosità:

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ cat random.py 
import random
print(random.random())
crap0101@orange:/tmp/foo$ python3 -I random.py
0.5746652935629554
comunque, a meno di non avere buoni motivi per farlo, è meglio non oscurare i nomi dei moduli standard
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Risolto] [Python] module object is not callable

Messaggio da vaeVictis »

@crap0101
Non capisco perché, riproducendo il problema dell'OP, a me non viene data l'indicazione del path del modulo importato al posto di random.

p.s.:
Comunque, complimenti a hey_tuco per aver modificato il primo post in modo da lasciare solo le informazioni utili alla soluzione del problema!
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Risolto] [Python] module object is not callable

Messaggio da crap0101 »

vaeVictis ha scritto:
venerdì 25 giugno 2021, 17:48
@crap0101
Non capisco perché, riproducendo il problema dell'OP, a me non viene data l'indicazione del path del modulo importato al posto di random.
magari è a causa di versioni diverse:

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ python2 bar.py 
Traceback (most recent call last):
  File "bar.py", line 2, in <module>
    x = random.random()
AttributeError: 'module' object has no attribute 'random'
crap0101@orange:/tmp/foo$ python3 bar.py 
Traceback (most recent call last):
  File "bar.py", line 2, in <module>
    x = random.random()
AttributeError: module 'random' has no attribute 'random'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 12, in <module>
    import subprocess, tempfile, os.path, re, pwd, grp, os, time, io
  File "/usr/lib/python3.8/tempfile.py", line 184, in <module>
    from random import Random as _Random
ImportError: cannot import name 'Random' from 'random' (/tmp/foo/random.py)

Original exception was:
Traceback (most recent call last):
  File "bar.py", line 2, in <module>
    x = random.random()
AttributeError: module 'random' has no attribute 'random'
con
crap0101@orange:/tmp/foo$ python2 --version && python3 --version
Python 2.7.18
Python 3.8.5
usando -v da info in più anche la 2.7, ma pure troppe :-D
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Risolto] [Python] module object is not callable

Messaggio da vaeVictis »

prova.py è il file che ha il contenuto mostrato dall'OP.
nella stessa directory ho creato il file random.py

Con python2 versione 2.7.17
La traceback è questa:

Codice: Seleziona tutto

$ python2 prova.py 
Traceback (most recent call last):
  File "prova.py", line 3, in <module>
    x = random.random()
AttributeError: 'module' object has no attribute 'random'
Con python3 viene fuori una fracca di roba:

Codice: Seleziona tutto

$ python3 prova.py 
Traceback (most recent call last):
  File "prova.py", line 3, in <module>
    x = random.random()
AttributeError: module 'random' has no attribute 'random'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 12, in <module>
    import subprocess, tempfile, os.path, re, pwd, grp, os, time, io
  File "/usr/lib/python3.6/tempfile.py", line 184, in <module>
    from random import Random as _Random
ImportError: cannot import name 'Random'

Original exception was:
Traceback (most recent call last):
  File "prova.py", line 3, in <module>
    x = random.random()
AttributeError: module 'random' has no attribute 'random'
In entrambi i casi, zero informazioni sul modulo effettivamente importato.
Boh.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Risolto] [Python] module object is not callable

Messaggio da crap0101 »

la 3 che versione è? qui sulla mia lo indica:

Codice: Seleziona tutto

  File "/usr/lib/python3.8/tempfile.py", line 184, in <module>
    from random import Random as _Random
ImportError: cannot import name 'Random' from 'random' (/tmp/foo/random.py)

Original exception was:
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Risolto] [Python] module object is not callable

Messaggio da vaeVictis »

crap0101 ha scritto:
lunedì 28 giugno 2021, 10:05
la 3 che versione è?

Codice: Seleziona tutto

$ python3 --version
Python 3.6.9
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Risolto] [Python] module object is not callable

Messaggio da crap0101 »

può essere che abbiano "affinato" successivamente, appunto sulla 3.8 qualcosa di più specifico lo dice
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti