Obteniendo el error de Python "de: no se puede leer / var / mail / Bio"

92

Estoy ejecutando un script de Python (bio) que da como resultado el siguiente error:

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

dado que mi script no tiene nada que ver con el correo, no entiendo por qué mi script está buscando en / var / mail.

Qué es lo que parece ser el problema aquí? Dudo que ayude ya que el script no parece ser el problema, pero aquí está mi script de todos modos:

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()

¿Cuál es el problema aquí? mala configuración de Python? Realmente no creo que sea el guión.

brucezepplin
fuente

Respuestas:

189

No, no es el script, es el hecho de que Python no ejecuta su script en absoluto. Si su secuencia de comandos está almacenada en un archivo con nombre script.py, debe ejecutarlo como python script.py, de lo contrario, el shell predeterminado lo ejecutará y se rescatará con la frompalabra clave. (Por cierto, fromes el nombre de una utilidad de línea de comandos que imprime los nombres de quienes han enviado correo al nombre de usuario dado, por eso intenta acceder a los buzones de correo).

Otra posibilidad es agregar la siguiente línea en la parte superior del script:

#!/usr/bin/env python

Esto le indicará a su shell que ejecute el script a través de en pythonlugar de intentar interpretarlo por sí solo.

Tamás
fuente
10
O #!/usr/bin/python/
kirbyfan64sos
13
Sí, a menos que pythonesté ubicado en otro lugar. Prefiero usar la envsolución -basada porque simplemente busca Python en la ruta predeterminada del usuario.
Tamás
Hmmm ... nunca escuché de eso. Muy cierto.
kirbyfan64sos
2
excelente, gracias por señalar mi error de colegial. Estoy haciendo la transición de escribir en el símbolo del sistema de Python a ejecutar scripts.
brucezepplin
gracias. No soy un codificador de Python, pero tengo que hacer esto para mi tarea.
arn-arn
14

Me encontré con un error similar

"de: no se puede leer /var/mail/django.test.utils"

al intentar ejecutar un comando

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

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

después de leer la respuesta de Tamás me di cuenta de que no estaba probando este comando en el shell de python sino en el termnial (esto les puede pasar a los nuevos en linux)

La solución fue ingresar primero en el shell de Python con el comando python y cuando obtenga estos >>> luego ejecute cualquier comando de Python

Ehsan Quranwala
fuente
5

Igual que aquí. Tuve este error al ejecutar un comando de importación desde la terminal sin activar el shell python3 a través de manage.py en un proyecto de django (sí, todavía soy un novato). Como era de esperar, la activación de shell permitió que el comando se interpretara correctamente.

./manage.py shell

y solo entonces

>>> from django.contrib.sites.models import Site
Sergii Shcherbak
fuente
3

Pon esto en la parte superior de tu archivo .py (para python 2.x)

#!/usr/bin/env python 

o para python 3.x

#!/usr/bin/env python3

Esto debería buscar el entorno de Python, sin él, ejecutará el código como si no fuera código de Python, sino directamente a la CLI. Si necesita especificar una ubicación manual del entorno de Python, ponga

#!/#path/#to/#python
Z.Davey
fuente
1

Recibí el mismo error porque estaba intentando ejecutar

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

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

Para resolver esto, escriba el comando python y cuando obtenga estos >>>, ejecute cualquier comando de Python

>>>from classDemo import MyClass
>>>f = MyClass()
Dhara Patel
fuente
-1

para Mac OS simplemente vaya a aplicaciones y ejecute estos comandos Instalar Certificados.com y Actualizar Shell Profile.command, ahora funcionará.

Suraj Kumar
fuente