Wyświetlanie błędu Pythona „od: nie można odczytać / var / mail / Bio”

92

Uruchamiam (bio) skrypt w języku Python, który powoduje następujący błąd:

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

ponieważ mój skrypt nie ma nic wspólnego z pocztą, nie rozumiem, dlaczego mój skrypt szuka w / var / mail.

Co wydaje się być problemem? wątpię, że to pomoże, ponieważ skrypt nie wydaje się być problemem, ale i tak oto mój skrypt:

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

Jaki jest tutaj problem? zła konfiguracja Pythona? Naprawdę nie sądzę, że to scenariusz.

brucezepplin
źródło

Odpowiedzi:

189

Nie, to nie jest skrypt, to fakt, że Twój skrypt w ogóle nie jest wykonywany przez Pythona. Jeśli twój skrypt jest przechowywany w pliku o nazwie script.py, musisz go wykonać jako python script.py, w przeciwnym razie domyślna powłoka wykona go i wyskoczy fromsłowo kluczowe. (Nawiasem mówiąc, fromjest to nazwa narzędzia wiersza poleceń, które wyświetla nazwiska tych, którzy wysłali pocztę na podaną nazwę użytkownika, dlatego próbuje uzyskać dostęp do skrzynek pocztowych).

Inną możliwością jest dodanie następującego wiersza na początku skryptu:

#!/usr/bin/env python

To poinstruuje twoją powłokę, aby wykonała skrypt za pośrednictwem pythonzamiast próbować interpretować go samodzielnie.

Tamás
źródło
10
Lub #!/usr/bin/python/
kirbyfan64sos
13
Tak, chyba że pythonznajduje się gdzie indziej. Wolę używać envrozwiązania opartego na rozwiązaniach, ponieważ po prostu wyszukuje Python w domyślnej ścieżce użytkownika.
Tamás
Hmmm ... Nigdy o tym nie słyszałem. Bardzo prawdziwe.
kirbyfan64sos
2
wspaniale - dziękuję za zwrócenie uwagi na mój szkolny błąd. robię przejście od pisania w wierszu poleceń Pythona do wykonywania skryptów.
brucezepplin
Dziękuję Ci. Nie jestem programistą Pythona, ale muszę to zrobić w ramach swojego zadania.
arn-arn
14

Napotkałem podobny błąd

„from: nie można odczytać /var/mail/django.test.utils”

podczas próby uruchomienia polecenia

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

w samouczku na https://docs.djangoproject.com/en/1.8/intro/tutorial05/

po przeczytaniu odpowiedzi Tamása zdałem sobie sprawę, że nie próbowałem tego polecenia w powłoce Pythona, ale w termnale (może się to zdarzyć nowicjuszom w Linuksie)

rozwiązaniem było najpierw wejście do powłoki Pythona za pomocą polecenia python, a kiedy je otrzymasz >>> następnie uruchom dowolne polecenia Pythona

Ehsan Quranwala
źródło
5

To samo tutaj. Wystąpił ten błąd podczas uruchamiania polecenia importu z terminala bez aktywacji powłoki Python3 przez manage.py w projekcie django (tak, jestem jeszcze nowicjuszem). Jak można się było spodziewać, aktywacja powłoki pozwoliła na poprawną interpretację polecenia.

./manage.py shell

i tylko wtedy

>>> from django.contrib.sites.models import Site
Sergii Shcherbak
źródło
3

Umieść to na początku pliku .py (dla Pythona 2.x)

#!/usr/bin/env python 

lub dla Pythona 3.x

#!/usr/bin/env python3

Powinno to wyszukać środowisko Pythona, bez niego wykona kod tak, jakby nie był kodem Pythona, ale bezpośrednio do CLI. Jeśli chcesz ręcznie określić lokalizację środowiska Pythona, wstaw

#!/#path/#to/#python
Z.Davey
źródło
1

Wystąpił ten sam błąd, ponieważ próbowałem kontynuować

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

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

Aby rozwiązać ten problem, wpisz polecenie python, a kiedy je otrzymasz >>>, uruchom dowolne polecenia Pythona

>>>from classDemo import MyClass
>>>f = MyClass()
Dhara Patel
źródło
-1

w przypadku systemu Mac OS wystarczy przejść do aplikacji i po prostu uruchomić te skrypty Install Certificates.command i Update Shell Profile.command, teraz będzie działać.

Suraj Kumar
źródło