Получение ошибки Python «от: не могу прочитать / var / mail / Bio»

92

Я запускаю (био) сценарий Python, который приводит к следующей ошибке:

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

поскольку мой скрипт не имеет ничего общего с почтой, я не понимаю, почему мой скрипт ищет в / var / mail.

В чем, кажется, проблема? Я сомневаюсь, что это поможет, поскольку сценарий не кажется проблемой, но все равно вот мой сценарий:

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

в чем проблема? плохая настройка питона? Я правда не думаю, что дело в сценарии.

Брюсезепплин
источник

Ответы:

190

Нет, дело не в сценарии, а в том, что ваш сценарий вообще не выполняется Python. Если ваш сценарий хранится в файле с именем script.py, вы должны выполнить его как python script.py, иначе оболочка по умолчанию выполнит его, и он выйдет из строя по fromключевому слову. (Между прочим, fromэто имя утилиты командной строки, которая печатает имена тех, кто отправил почту на данное имя пользователя, поэтому она пытается получить доступ к почтовым ящикам).

Другой вариант - добавить следующую строку в начало скрипта:

#!/usr/bin/env python

Это укажет вашей оболочке выполнить скрипт через, pythonа не пытаться интерпретировать его самостоятельно.

Тамаш
источник
10
Или #!/usr/bin/python/
kirbyfan64sos
13
Ага, если только pythonне находится где-нибудь еще. Я предпочитаю использовать envрешение на основе -base, потому что оно просто ищет Python по пути пользователя по умолчанию.
Tamás
Хммм ... Я никогда об этом не слышал. Совершенно верно.
kirbyfan64sos
2
отлично - спасибо, что указали на мою школьную ошибку. Я перехожу от ввода в командной строке python к выполнению сценариев.
brucezepplin
Спасибо. Я не программист на Python, но я должен сделать это по моему заданию.
arn-arn
14

Я столкнулся с подобной ошибкой

"от: не могу прочитать /var/mail/django.test.utils"

при попытке запустить команду

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

в учебнике по адресу https://docs.djangoproject.com/en/1.8/intro/tutorial05/

после прочтения ответа Тамаша я понял, что пробовал эту команду не в оболочке python, а в терминале (это может случиться с новичками в Linux)

решение заключалось в том, чтобы сначала войти в оболочку python с помощью команды python, и когда вы получите эти >>>, затем запустите любые команды python

Эхсан Коранвала
источник
5

Тоже самое. У меня была эта ошибка при запуске команды импорта из терминала без активации оболочки python3 через manage.py в проекте django (да, я еще новичок). Как и следовало ожидать, активация оболочки позволила правильно интерпретировать команду.

./manage.py shell

и только тогда

>>> from django.contrib.sites.models import Site
Сергей Щербак
источник
3

Поместите это в начало вашего файла .py (для python 2.x)

#!/usr/bin/env python 

или для python 3.x

#!/usr/bin/env python3

Это должно искать среду python, без нее он будет выполнять код, как если бы это был не код Python, а прямо в CLI. Если вам нужно указать вручную расположение среды python, введите

#!/#path/#to/#python
З. Дэйви
источник
1

У меня такая же ошибка, потому что я пытался запустить

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

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

Чтобы решить эту проблему, введите команду python и когда вы получите эти >>>, запустите любые команды python

>>>from classDemo import MyClass
>>>f = MyClass()
Дхара Патель
источник
-1

для Mac OS просто зайдите в приложения и запустите эти команды Scripts Install Certificates.com и Update Shell Profile.com, теперь все будет работать.

Сурадж Кумар
источник