Отримання помилки 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()

в чому тут проблема? погана настройка python? Я справді не думаю, що це сценарій.

Відповіді:


189

Ні, це не сценарій, це той факт, що ваш сценарій взагалі не виконується Python. Якщо ваш скрипт зберігається у файлі з іменем script.py, вам доведеться виконати його як python script.py, інакше оболонка за замовчуванням виконає його, і він вийде за fromключове слово. (До речі, fromце назва утиліти командного рядка, яка друкує імена тих, хто надіслав пошту на вказане ім'я користувача, тому саме вона намагається отримати доступ до поштових скриньок).

Інша можливість - додати наступний рядок у верх сценарію:

#!/usr/bin/env python

Це дасть вказівку вашій оболонці виконати сценарій за допомогою, pythonа не намагатися інтерпретувати його самостійно.


10
Або #!/usr/bin/python/
kirbyfan64s

13
Так, хіба що pythonзнаходиться десь в іншому місці. Я вважаю за краще використовувати envрішення на основі, оскільки воно просто шукає Python у типовому шляху користувача.
Тамас

Мда ... я ніколи про це не чув. Дуже правильно.
kirbyfan64sos

2
відмінно - дякую, що вказав на мою помилку школяра. я переходжу від набору тексту в командному рядку python до виконання скриптів.
brucezepplin

спасибі. Я не кодувач пітонів, але для цього я повинен це зробити.
арн-арн

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 просто перейдіть до програм і просто запустіть ці сценарії Встановіть сертифікати.command та Update Shell Profile.command, тепер це буде працювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.