3

可能重复:
如何从 python 中的测试模块导入 src

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

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)

提前致谢。

4

3 回答 3

5
import sys
sys.path.append('PathToModule')
import models.user
于 2012-12-04T16:30:56.500 回答
1

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

于 2012-12-04T16:43:01.563 回答
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'

于 2012-12-04T16:49:14.497 回答