View Full Version : [Python] Importare moduli
David_jcd
16-10-2014, 11:04
Ciao!
Sto muovendo i primi passi con python ed ho dei problemi ad importare moduli (siccome sono novizio porterete pazienza se faccio confusione coi termini tecnici)
Esempio: ho scritto uno script come questo:
def media_arit(*x):
sum=0
i=0
for value in x:
sum+=value
i+=1
return(sum/float(i))
print(media_arit(4.5, 5.5, 6.5))
e l'ho salvato come stat.py nella cartella Python scripts.
Ora sono nella console e voglio usare la funzione media_arit.
Leggendo i manuali mi dovrebbe bastare assicurarmi di lavorare dalla stessa castella ed usare
from stat import media_arit
Ma ottengo un messaggio di errore
Traceback (most recent call last):
File "<ipython-input-19-1cb3de2e8166>", line 1, in <module>
from stat import media_arit
ImportError: cannot import name 'media_arit'
Qualcuno sa dirmi dove sbaglio?
Grazie
cdimauro
16-10-2014, 21:01
Molto probabilmente la console è stata lanciata da un path che non consente di raggiungere lo script che hai salvato.
Prova a eseguire questo:
import os
print os.getcwd()
e vedi che percorso ti stampa.
Comunque o sposti lo script nella cartella in cui lavora la console, oppure aggiungi il percorso della cartella degli script all'elenco di percorsi che Python usa per cercare i moduli:
import sys
sys.path.append(r'D:\Documenti\Script Python')
David_jcd
17-10-2014, 08:57
Molto probabilmente la console è stata lanciata da un path che non consente di raggiungere lo script che hai salvato.
Prova a eseguire questo:
import os
print os.getcwd()
e vedi che percorso ti stampa.
Comunque o sposti lo script nella cartella in cui lavora la console, oppure aggiungi il percorso della cartella degli script all'elenco di percorsi che Python usa per cercare i moduli:
import sys
sys.path.append(r'D:\Documenti\Script Python')
Ciao,
lo script l'ho salvato nella cartella in cui lavoro con la console (l'ho scritto sopra ma ho fatto un errore e non si capiva).
Ho provato i comandi che mi suggerivi ed ho ottenuto
import os
print os.getcwd()
File "<ipython-input-4-af6260edda71>", line 1
print os.getcwd()
^
SyntaxError: invalid syntax
Grazie!
David_jcd
17-10-2014, 09:01
Ah, no, forse ho capito, il print non andava perchè sto lavorando in pyton 3 e con print ci vogliono le parentesi.
E poi per cambiare cartella usavo cd che, anche se non dà messaggio di errore, non è corretto.
Riprovato, ecco cosa ottento
os.getcwd()
Out[37]: 'C:\\users\\David\\Documents\\Python Scripts'
os.listdir('.')
Out[38]: ['corso', 'python_lernen.py', 'stat.py']
from stat import media_arit
Traceback (most recent call last):
File "<ipython-input-39-1cb3de2e8166>", line 1, in <module>
from stat import media_arit
ImportError: cannot import name 'media_arit'
Edit: rinominando lo script da "stat" a "stati" tutto funziona. E' possibile che "stat" sia un nome riservato?
ingframin
17-10-2014, 13:55
Ah, no, forse ho capito, il print non andava perchè sto lavorando in pyton 3 e con print ci vogliono le parentesi.
E poi per cambiare cartella usavo cd che, anche se non dà messaggio di errore, non è corretto.
Riprovato, ecco cosa ottento
os.getcwd()
Out[37]: 'C:\\users\\David\\Documents\\Python Scripts'
os.listdir('.')
Out[38]: ['corso', 'python_lernen.py', 'stat.py']
from stat import media_arit
Traceback (most recent call last):
File "<ipython-input-39-1cb3de2e8166>", line 1, in <module>
from stat import media_arit
ImportError: cannot import name 'media_arit'
Edit: rinominando lo script da "stat" a "stati" tutto funziona. E' possibile che "stat" sia un nome riservato?
stat e' un modulo della libreria standard!
https://docs.python.org/2/library/stat.html
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import stat
>>> dir(stat)
['SF_APPEND', 'SF_ARCHIVED', 'SF_IMMUTABLE', 'SF_NOUNLINK', 'SF_SNAPSHOT', 'ST_ATIME', 'ST_CTIME', 'ST_DEV', 'ST_GID', 'ST_INO', 'ST_MODE', 'ST_MTIME', 'ST_NLINK', 'ST_SIZE', 'ST_UID', 'S_ENFMT', 'S_IEXEC', 'S_IFBLK', 'S_IFCHR', 'S_IFDIR', 'S_IFDOOR', 'S_IFIFO', 'S_IFLNK', 'S_IFMT', 'S_IFPORT', 'S_IFREG', 'S_IFSOCK', 'S_IFWHT', 'S_IMODE', 'S_IREAD', 'S_IRGRP', 'S_IROTH', 'S_IRUSR', 'S_IRWXG', 'S_IRWXO', 'S_IRWXU', 'S_ISBLK', 'S_ISCHR', 'S_ISDIR', 'S_ISDOOR', 'S_ISFIFO', 'S_ISGID', 'S_ISLNK', 'S_ISPORT', 'S_ISREG', 'S_ISSOCK', 'S_ISUID', 'S_ISVTX', 'S_ISWHT', 'S_IWGRP', 'S_IWOTH', 'S_IWRITE', 'S_IWUSR', 'S_IXGRP', 'S_IXOTH', 'S_IXUSR', 'UF_APPEND', 'UF_COMPRESSED', 'UF_HIDDEN', 'UF_IMMUTABLE', 'UF_NODUMP', 'UF_NOUNLINK', 'UF_OPAQUE', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_filemode_table', 'filemode']
>>>
David_jcd
20-10-2014, 21:48
stat e' un modulo della libreria standard!
https://docs.python.org/2/library/stat.html
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import stat
>>> dir(stat)
['SF_APPEND', 'SF_ARCHIVED', 'SF_IMMUTABLE', 'SF_NOUNLINK', 'SF_SNAPSHOT', 'ST_ATIME', 'ST_CTIME', 'ST_DEV', 'ST_GID', 'ST_INO', 'ST_MODE', 'ST_MTIME', 'ST_NLINK', 'ST_SIZE', 'ST_UID', 'S_ENFMT', 'S_IEXEC', 'S_IFBLK', 'S_IFCHR', 'S_IFDIR', 'S_IFDOOR', 'S_IFIFO', 'S_IFLNK', 'S_IFMT', 'S_IFPORT', 'S_IFREG', 'S_IFSOCK', 'S_IFWHT', 'S_IMODE', 'S_IREAD', 'S_IRGRP', 'S_IROTH', 'S_IRUSR', 'S_IRWXG', 'S_IRWXO', 'S_IRWXU', 'S_ISBLK', 'S_ISCHR', 'S_ISDIR', 'S_ISDOOR', 'S_ISFIFO', 'S_ISGID', 'S_ISLNK', 'S_ISPORT', 'S_ISREG', 'S_ISSOCK', 'S_ISUID', 'S_ISVTX', 'S_ISWHT', 'S_IWGRP', 'S_IWOTH', 'S_IWRITE', 'S_IWUSR', 'S_IXGRP', 'S_IXOTH', 'S_IXUSR', 'UF_APPEND', 'UF_COMPRESSED', 'UF_HIDDEN', 'UF_IMMUTABLE', 'UF_NODUMP', 'UF_NOUNLINK', 'UF_OPAQUE', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_filemode_table', 'filemode']
>>>
Grazie!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.