Ottenere l'errore Python "da: impossibile leggere / var / mail / Bio"


92

Sto eseguendo uno script (bio) python che si traduce nel seguente errore:

from: can't read /var/mail/Bio

visto che il mio script non ha nulla a che fare con la posta, non capisco perché il mio script cerchi in / var / mail.

Quale sembra essere il problema qui? dubito che aiuterà perché lo script non sembra essere il problema, ma ecco comunque il mio script:

from Bio import SeqIO
from Bio.SeqUtils import ProtParam

handle = open("examplefasta.fasta") 
for record in SeqIO.parse(handle, "fasta"): 
    seq = str(record.seq)
    X = ProtParam.ProteinAnalysis(seq)
    print X.count_amino_acids() 
    print X.get_amino_acids_percent() 
    print X.molecular_weight() 
    print X.aromaticity() 
    print X.instability_index() 
    print X.flexibility() 
    print X.isoelectric_point() 
    print X.secondary_structure_fraction()

qual è il problema qui? cattiva configurazione di Python? Non credo proprio che sia la sceneggiatura.

Risposte:


189

No, non è lo script, è il fatto che il tuo script non viene eseguito affatto da Python. Se il tuo script è memorizzato in un file denominato script.py, devi eseguirlo come python script.py, altrimenti lo eseguirà la shell predefinita e salterà alla fromparola chiave. (Per inciso, fromè il nome di un'utilità della riga di comando che stampa i nomi di coloro che hanno inviato posta al nome utente specificato, quindi è per questo che tenta di accedere alle caselle di posta).

Un'altra possibilità è aggiungere la seguente riga all'inizio dello script:

#!/usr/bin/env python

Questo indicherà alla tua shell di eseguire lo script tramite pythoninvece di cercare di interpretarlo da solo.


10
Oppure #!/usr/bin/python/
kirbyfan64sos

13
Sì, a meno che non pythonsi trovi da qualche altra parte. Preferisco usare la envsoluzione -based perché cerca semplicemente Python nel percorso predefinito dell'utente.
Tamás

Hmmm ... non ne ho mai sentito parlare. Verissimo.
kirbyfan64sos

2
eccellente - grazie per aver segnalato il mio errore da scolaro. Sto effettuando la transizione dalla digitazione al prompt dei comandi di Python all'esecuzione degli script.
brucezepplin

grazie. Non sono un programmatore Python ma devo farlo per il mio incarico.
arn-arn

14

Mi sono imbattuto in un errore simile

"da: impossibile leggere /var/mail/django.test.utils"

quando si tenta di eseguire un comando

>>> from django.test.utils import setup_test_environment
>>> setup_test_environment()

nel tutorial su https://docs.djangoproject.com/en/1.8/intro/tutorial05/

dopo aver letto la risposta di Tamás mi sono reso conto che non stavo provando questo comando nella shell di python ma nel termnial (questo può succedere a chi è nuovo di linux)

la soluzione era entrare prima nella shell python con il comando python e quando ottieni questi >>> quindi eseguire tutti i comandi python


5

Anch'io. Ho riscontrato questo errore durante l'esecuzione di un comando di importazione dal terminale senza attivare la shell python3 tramite manage.py in un progetto django (sì, sono ancora un principiante). Come ci si deve aspettare, l'attivazione della shell ha permesso di interpretare correttamente il comando.

./manage.py shell

e solo allora

>>> from django.contrib.sites.models import Site

3

Mettilo all'inizio del tuo file .py (per python 2.x)

#!/usr/bin/env python 

o per python 3.x

#!/usr/bin/env python3

Questo dovrebbe cercare l'ambiente python, senza di esso, eseguirà il codice come se non fosse codice python, ma direttamente alla CLI. Se è necessario specificare una posizione manuale dell'ambiente python, inserire

#!/#path/#to/#python

1

Ho ricevuto lo stesso errore perché stavo cercando di eseguire

XXX-Macmini:Python-Project XXX.XXX$ from classDemo import MyClass

from: can't read /var/mail/classDemo

Per risolvere questo problema, digita command python e quando ottieni questi >>> esegui tutti i comandi python

>>>from classDemo import MyClass
>>>f = MyClass()

-1

per Mac OS basta andare su applicazioni ed eseguire questi script Installa Certificates.command e Aggiorna Shell Profile.command, ora funzionerà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.