104

我正在运行一个(生物)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设置?我真的不认为这是剧本。

4

6 回答 6

216

不,这不是脚本,而是你的脚本根本没有被 Python 执行。如果您的脚本存储在名为 的文件中script.py,则必须将其执行为python script.py,否则默认 shell 将执行它并在from关键字处退出。(顺便说一下,from是一个命令行实用程序的名称,它打印向给定用户名发送邮件的人的姓名,这就是它尝试访问邮箱的原因)。

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

#!/usr/bin/env python

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

于 2013-04-17T20:39:47.423 回答
17

我遇到了类似的错误

“来自:无法读取 /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 中而是在终端中尝试这个命令(这可能发生在那些刚接触 linux 的人身上)

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

于 2015-07-23T12:05:54.337 回答
5

同样在这里。在 django 项目中从终端运行导入命令而没有通过 manage.py 激活 python3 shell 时出现此错误(是的,我还是个新手)。正如人们所预料的那样,激活 shell 可以正确解释命令。

./manage.py shell

只有这样

>>> from django.contrib.sites.models import Site
于 2016-09-24T11:38:20.383 回答
5

把它放在你的 .py 文件的顶部(对于 python 2.x)

#!/usr/bin/env python 

或者对于 python 3.x

#!/usr/bin/env python3

这应该查找 python 环境,没有它,它将执行代码,就好像它不是 python 代码一样,而是直接到 CLI。如果需要手动指定python环境放置的位置

#!/#path/#to/#python
于 2018-07-11T06:56:56.273 回答
2

我遇到了同样的错误,因为我试图继续运行

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()
于 2020-04-08T12:29:59.120 回答
-1

对于 Mac OS,只需转到应用程序并运行这些脚本 Install Certificates.command 和 Update Shell Profile.command,现在它就可以工作了。

于 2020-03-14T16:21:29.703 回答