รับข้อผิดพลาด 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 ไม่ดี? ฉันไม่คิดว่ามันเป็นบท

คำตอบ:


190

ไม่ไม่ใช่สคริปต์ แต่เป็นความจริงที่ว่าสคริปต์ของคุณไม่ได้ถูกเรียกใช้งานโดย Python เลย หากสคริปต์ของคุณถูกเก็บไว้ในไฟล์ที่มีชื่อว่าscript.pyคุณต้องเรียกใช้งานเป็นpython script.pyมิฉะนั้นเชลล์เริ่มต้นจะดำเนินการและมันจะประกันตัวออกมาที่fromคีย์เวิร์ด (อนึ่งfromเป็นชื่อของยูทิลิตี้บรรทัดคำสั่งซึ่งพิมพ์ชื่อของผู้ที่ส่งเมลไปยังชื่อผู้ใช้ที่ระบุดังนั้นจึงพยายามเข้าถึงกล่องเมล)

ความเป็นไปได้อีกประการหนึ่งคือการเพิ่มบรรทัดต่อไปนี้ที่ด้านบนของสคริปต์:

#!/usr/bin/env python

สิ่งนี้จะสั่งให้เชลล์ของคุณรันสคริปต์ผ่านpythonแทนที่จะพยายามตีความด้วยตัวมันเอง


10
หรือ#!/usr/bin/python/
kirbyfan64sos

13
ใช่เว้นแต่pythonจะอยู่ที่อื่น ฉันชอบใช้envโซลูชันพื้นฐานเพราะมันเพียงแค่ค้นหา Python ในเส้นทางเริ่มต้นของผู้ใช้
Tamás

อืม ... ฉันไม่เคยได้ยินมาก่อน จริงแท้แน่นอน.
kirbyfan64sos

2
ยอดเยี่ยม - ขอบคุณที่ชี้ให้เห็นข้อผิดพลาดของเด็กนักเรียนของฉัน ฉันกำลังเปลี่ยนจากการพิมพ์ที่พรอมต์คำสั่ง python เป็นการเรียกใช้สคริปต์
brucezepplin

ขอบคุณ. ฉันไม่ใช่คนเขียนโค้ด python แต่ต้องทำเพื่องานที่ได้รับมอบหมาย
arn-arn

14

ฉันพบข้อผิดพลาดที่คล้ายกัน

"from: ไม่สามารถอ่าน /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/

หลังจากอ่านคำตอบของTamásฉันรู้ว่าฉันไม่ได้ลองใช้คำสั่งนี้ใน python shell แต่อยู่ใน termnial (สิ่งนี้อาจเกิดขึ้นกับผู้ที่เพิ่งเริ่มใช้ linux)

วิธีแก้ปัญหาคือต้องเข้าสู่ python shell ก่อนด้วยคำสั่ง python และเมื่อคุณได้รับสิ่งเหล่านี้ >>> จากนั้นรันคำสั่ง python


5

เหมือนกันที่นี่ ฉันมีข้อผิดพลาดนี้เมื่อเรียกใช้คำสั่งนำเข้าจากเทอร์มินัลโดยไม่เปิดใช้งาน python3 shell ผ่าน 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

ในการแก้ปัญหานี้ให้พิมพ์ command pythonและเมื่อคุณได้รับสิ่งเหล่านี้ >>> จากนั้นรันคำสั่ง python

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

-1

สำหรับ Mac OS เพียงไปที่แอปพลิเคชันและเรียกใช้สคริปต์เหล่านี้ติดตั้ง Certificates.command และอัปเดต Shell Profile.command ตอนนี้ก็จะใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.