Gặp lỗi Python “từ: không thể đọc / var / mail / Bio”


92

Tôi đang chạy tập lệnh python (sinh học), dẫn đến lỗi sau:

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

vì tập lệnh của tôi không liên quan gì đến thư, tôi không hiểu tại sao tập lệnh của tôi lại tìm thấy trong / var / mail.

Có vẻ có vấn đề gì ở đây? tôi nghi ngờ nó sẽ giúp ích vì kịch bản dường như không phải là vấn đề, nhưng đây là kịch bản của tôi dù sao:

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

vấn đề ở đây là gì? thiết lập python không tốt? Tôi thực sự không nghĩ đó là kịch bản.

Câu trả lời:


189

Không, đó không phải là script, thực tế là script của bạn không được thực thi bởi Python. Nếu tập lệnh của bạn được lưu trữ trong một tệp có tên script.py, bạn phải thực thi nó python script.py, nếu không, trình bao mặc định sẽ thực thi nó và nó sẽ giải cứu theo fromtừ khóa. (Ngẫu nhiên, fromlà tên của tiện ích dòng lệnh in tên của những người đã gửi thư đến tên người dùng đã cho, vì vậy đó là lý do tại sao nó cố gắng truy cập các hộp thư).

Một khả năng khác là thêm dòng sau vào đầu tập lệnh:

#!/usr/bin/env python

Điều này sẽ hướng dẫn trình bao của bạn thực thi tập lệnh thông qua pythonthay vì cố gắng diễn giải nó một mình.


10
Hoặc #!/usr/bin/python/
kirbyfan64sos

13
Yup, trừ khi pythonđược đặt ở một nơi khác. Tôi thích sử dụng envgiải pháp dựa trên bởi vì nó chỉ đơn giản là tra cứu Python trong đường dẫn mặc định của người dùng.
Tamás

Hmmm ... Tôi chưa bao giờ nghe nói về điều đó. Rất đúng.
kirbyfan64sos

2
xuất sắc - cảm ơn vì đã chỉ ra lỗi học sinh của tôi. tôi đang thực hiện chuyển đổi từ nhập tại dấu nhắc lệnh python sang thực thi các tập lệnh.
brucezepplin

cảm ơn bạn. Tôi không phải là một nhà lập trình python nhưng tôi phải làm việc này cho nhiệm vụ của mình.
arn-arn

14

Tôi đã gặp một lỗi tương tự

"from: không thể đọc /var/mail/django.test.utils"

khi cố gắng chạy một lệnh

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

trong hướng dẫn tại https://docs.djangoproject.com/en/1.8/intro/tutorial05/

sau khi đọc câu trả lời của Tamás, tôi nhận ra rằng tôi không thử lệnh này trong python shell mà là trong thời hạn ngắn (điều này có thể xảy ra với những người mới sử dụng linux)

giải pháp đầu tiên là nhập vào trình bao python bằng lệnh python và khi bạn nhận được những điều này >>> sau đó chạy bất kỳ lệnh python nào


5

Ở đây cũng vậy. Tôi đã gặp lỗi này khi chạy lệnh nhập từ thiết bị đầu cuối mà không kích hoạt trình bao python3 thông qua management.py trong dự án django (vâng, tôi là người mới). Như người ta phải mong đợi, việc kích hoạt shell cho phép lệnh được diễn giải chính xác.

./manage.py shell

và chỉ sau đó

>>> from django.contrib.sites.models import Site

3

Đặt cái này ở đầu tệp .py của bạn (dành cho python 2.x)

#!/usr/bin/env python 

hoặc cho python 3.x

#!/usr/bin/env python3

Điều này sẽ tìm kiếm môi trường python, nếu không có nó, nó sẽ thực thi mã như thể nó không phải là mã python, mà là thẳng đến CLI. Nếu bạn cần chỉ định vị trí thủ công của môi trường python, hãy đặt

#!/#path/#to/#python

1

Tôi gặp lỗi tương tự vì tôi đang cố gắng chạy tiếp

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

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

Để giải quyết vấn đề này, hãy nhập lệnh python và khi bạn nhận được những điều này >>> sau đó chạy bất kỳ lệnh python nào

>>>from classDemo import MyClass
>>>f = MyClass()

-1

đối với Mac OS, chỉ cần vào các ứng dụng và chỉ cần chạy các Scripts này Install Certificates.command và Update Shell Profile.command, bây giờ nó sẽ hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.