不寻常的表示法 - 蟒蛇

时间:2012-09-27 23:17:34

标签: python

这可能是一个非常简单的问题。我正在运行python代码,我收到了一条错误消息:

File "/home/mbenchoufi/brisket/../brisket/views.py", line 11, in <module>
from influence.forms import SearchForm

ImportError: No module named forms

问题首先是我确实在/ home / myname / brisket /中有一个名为views.py的文件,但我不明白这个符号:/home/myname/brisket/../brisket/views.py

我是否有路径配置问题以及此表示法的含义是什么?

顺便说一下,一个非常奇怪的事情是我在influence文件夹中有一个名为forms.py的文件,在这个文件中我有一个名为SearchForm的类...错误信息怎么可以?

2 个答案:

答案 0 :(得分:5)

这不是特定于Python的表示法,它是UNIX文件系统表示法。 UNIX路径中的..表示“备份一个目录”,例如,在这种情况下,/home/myname/brisket/..仅相当于/home/myname

Python以这种方式显示文件名的原因可能是由于某种原因,您的sys.path实际上有/home/myname/brisket/..。这不是问题,因为Python可以很好地遵循路径中的..

此错误消息告诉您的是,在处理文件/home/myname/brisket/../brisket/views.py(与/home/myname/brisket/views.py文件相同时)时,会有一行代码

from influence.forms import SearchForm

导致错误。具体来说,它是ImportError,意味着Python的导入机制找不到(或无法读取)文件influence/forms.py。您应该检查Python程序中sys.path的值,以确保influence/的父目录在列表中,并确保该文件是可读的。 (还要确保influence/__init__.py存在,但我不确定特定问题是否会导致您看到的错误。)

答案 1 :(得分:2)

"/home/myname/brisket/../brisket/views.py"

相当于

"/home/myname/brisket/views.py"

原因可能是你PYTHONPATH的一个条目,例如:像

export PYTHONPATH="$HOME/../brisket:$PYTHONPATH"

http://docs.python.org/using/cmdline.html#envvar-PYTHONPATH

上述方法具有为其他用户工作的好处,同时不需要到/ home的绝对路径。写得像

export PYTHONPATH="/home/brisket:$PYTHONPATH"

获得更简单的路径