Obtention de l'erreur Python "de: impossible de lire / var / mail / Bio"

92

J'exécute un script (bio) python qui entraîne l'erreur suivante:

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

vu que mon script n'a rien à voir avec le courrier, je ne comprends pas pourquoi mon script cherche dans / var / mail.

Quel semble être le problème ici? Je doute que cela aide car le script ne semble pas être le problème, mais voici quand même mon 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()

Quel est le problème ici? mauvaise configuration de python? Je ne pense vraiment pas que ce soit le scénario.

brucezepplin
la source

Réponses:

189

Non, ce n'est pas le script, c'est le fait que votre script n'est pas du tout exécuté par Python. Si votre script est stocké dans un fichier nommé script.py, vous devez l'exécuter en tant que python script.py, sinon le shell par défaut l'exécutera et il renflouera au frommot - clé. (Incidemment,from est le nom d'un utilitaire de ligne de commande qui imprime les noms de ceux qui ont envoyé du courrier au nom d'utilisateur donné, c'est pourquoi il essaie d'accéder aux boîtes aux lettres).

Une autre possibilité est d'ajouter la ligne suivante en haut du script:

#!/usr/bin/env python

Cela demandera à votre shell d'exécuter le script via pythonau lieu d'essayer de l'interpréter seul.

Tamás
la source
10
Ou #!/usr/bin/python/
kirbyfan64sos
13
Ouais, sauf s'il pythonest situé ailleurs. Je préfère utiliser la envsolution basée sur la base de données car elle recherche simplement Python dans le chemin par défaut de l'utilisateur.
Tamás
Hmmm ... je n'en ai jamais entendu parler. Très vrai.
kirbyfan64sos
2
excellent - merci d'avoir signalé mon erreur d'écolier. Je fais la transition entre la saisie à l'invite de commande python et l'exécution de scripts.
brucezepplin
Merci. Je ne suis pas un codeur python mais je dois le faire pour ma mission.
arn-arn
14

J'ai rencontré une erreur similaire

"from: impossible de lire /var/mail/django.test.utils"

en essayant d'exécuter une commande

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

dans le didacticiel à l' adresse https://docs.djangoproject.com/en/1.8/intro/tutorial05/

après avoir lu la réponse de Tamás, j'ai réalisé que je n'essayais pas cette commande dans le shell python mais dans le termnial (cela peut arriver à ceux qui sont nouveaux sur linux)

La solution était d'abord d'entrer dans le shell python avec la commande python et lorsque vous obtenez ces >>> puis exécutez toutes les commandes python

Ehsan Quranwala
la source
5

Pareil ici. J'ai eu cette erreur lors de l'exécution d'une commande d'importation à partir du terminal sans activer le shell python3 via manage.py dans un projet django (oui, je suis encore un débutant). Comme il faut s'y attendre, l'activation du shell a permis à la commande d'être interprétée correctement.

./manage.py shell

et alors seulement

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

Mettez ceci en haut de votre fichier .py (pour python 2.x)

#!/usr/bin/env python 

ou pour python 3.x

#!/usr/bin/env python3

Cela devrait rechercher l'environnement python, sans lui, il exécutera le code comme s'il ne s'agissait pas de code python, mais directement vers la CLI. Si vous devez spécifier un emplacement manuel de l'environnement python, mettez

#!/#path/#to/#python
Z.Davey
la source
1

J'ai eu la même erreur parce que j'essayais de courir

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

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

Pour résoudre ce problème, tapez la commande python et lorsque vous obtenez ces >>> puis exécutez toutes les commandes python

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

pour Mac OS, accédez simplement aux applications et exécutez simplement ces scripts Install Certificates.command et Update Shell Profile.command, maintenant cela fonctionnera.

Suraj Kumar
la source