获取Python错误"来自:无法读取/ var/mail/Bio"

bru*_*lin 81 python

我正在运行(生物)python脚本,导致以下错误:

from: can't read /var/mail/Bio
Run Code Online (Sandbox Code Playgroud)

看到我的脚本与邮件没有任何关系,我不明白为什么我的脚本在查找/ 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()
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?糟糕的python设置?我真的不认为这是剧本.

Tam*_*más 165

不,这不是脚本,事实上你的脚本根本不是由Python执行的.如果你的脚本存储在一个名为的文件中script.py,你必须执行它python script.py,否则默认的shell将执行它,它将在from关键字处拯救.(顺便说一句,from是命令行实用程序的名称,它打印已将邮件发送到给定用户名的人的名称,这就是它尝试访问邮箱的原因).

另一种可能性是将以下行添加到脚本的顶部:

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

这将指示您的shell执行脚本,python而不是尝试自己解释它.

  • 是的,除非``python``位于其他地方.我更喜欢使用基于``env``的解决方案,因为它只是在用户的默认路径中查找Python. (11认同)
  • 或者`#!/ usr/bin/python` / (8认同)
  • 非常好 - 谢谢你指出我的男生错误.我正在从python命令提示符下键入到执行脚本. (2认同)

小智 12

我遇到了类似的错误

"来自:无法读取/var/mail/django.test.utils"

在尝试运行命令时

>>> from django.test.utils import setup_test_environment
>>> setup_test_environment()
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/1.8/intro/tutorial05/的教程中

在读完Tamás的答案之后,我意识到我没有在python shell中尝试这个命令但是在termnial中(这可能发生在那些刚接触linux的人身上)

解决方案是首先使用命令python进入python shell,当你得到这些>>>然后运行任何python命令


小智 5

同样在这里。我在从终端运行导入命令时遇到了这个错误,而没有通过 django 项目中的 manage.py 激活 python3 shell(是的,我还是个新手)。正如人们所期望的那样,激活 shell 允许正确解释命令。

./manage.py shell
Run Code Online (Sandbox Code Playgroud)

然后才

>>> from django.contrib.sites.models import Site
Run Code Online (Sandbox Code Playgroud)


小智 5

将其放在 .py 文件的顶部(对于 Python 2.x)

#!/usr/bin/env python 
Run Code Online (Sandbox Code Playgroud)

或对于 Python 3.x

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

这应该查找 Python 环境。如果没有它,它将执行代码,就好像它不是 Python 代码,而是 shell 代码。如果需要手动指定Python环境的位置,则输入

#!/#path/#to/#python
Run Code Online (Sandbox Code Playgroud)