这可能是一个非常简单的问题。我正在运行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的类...错误信息怎么可以?答案 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"
获得更简单的路径