如何导入模块

时间:2012-12-04 16:26:05

标签: python

  

可能重复:
  How to import the src from the tests module in python

我想调用位于另一个目录中的另一个模块。我的代码结构是

flask_beginner/
  app.py
  models/
      __init__.py
      user.py
  tests/
      __init__.py
      user_test.py

我想从user_test.py调用用户模块。我的user_test.py就是这样..

import models.user
....

但是它引发了没有模块名为models.user

的错误 你知道吗? 我的Python版本是2.7.2。(使用virtualenv)

提前致谢。

3 个答案:

答案 0 :(得分:5)

import sys
sys.path.append('PathToModule')
import models.user

答案 1 :(得分:1)

如果从tests目录运行user_test.py,它将无法找到models包。但是,如果从flask_beginner目录运行它,它将能够找到该模块。原因是您执行脚本的目录被附加到python路径,因此它可以找到项目中的所有模块。

答案 2 :(得分:1)

当你运行import <module_name>时,Python在PythonPath变量的所有目录中搜索具有该名称的模块,如果找到它,则导入它。当前目录(即运行脚本的目录)通常位于PythonPath中,因此大多数脚本都能够找到位于同一目录中的模块。

如果需要导入位于不同目录中的模块,则需要将该目录添加到PythonPath中。您可以按如下方式执行此操作:

import sys
sys.path.append(<the_path_to_the_module>)

(当然,您应该使用正确的路径替换<the_path_to_the_module>,在这种情况下,路径为'../models/user.py'