首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python nosetests的问题

python nosetests的问题
EN

Stack Overflow用户
提问于 2015-09-10 03:26:02
回答 1查看 367关注 0票数 0

我对python nosetests有问题。当我尝试运行该命令时,我得到一个导入错误。我检查了模块是否正确安装在我的机器上。实际上,如果我从运行nosetests的目录运行解释器,我就能够导入模块。我检查了问题不仅在于导入该模块,还在于导入不同的模块。解决办法在哪里呢?

下面是我运行nosetests后可能的回溯:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/nose/loader.py", line 418, in loadTestsFromName
    addr.filename, addr.module)
  File "/Library/Python/2.7/site-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/Library/Python/2.7/site-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/Users/user-me/Desktop/bla/tests/blatest1", line 1, in <module>
    import a_module as mo
ImportError: No module named a_module

但是如果我打开python解释器,我就能够导入a_module。

下面是我的目录结构:

代码语言:javascript
复制
ROOT
└── package
    ├── __init__.py
    ├── package1
    └── tests
        ├── tests1
        │   └── package1 -> ../../package1
        └── tests2
EN

回答 1

Stack Overflow用户

发布于 2015-09-10 17:58:44

你的问题与鼻子本身无关。在查找模块和包时,除了Python解释器之外,nose不会执行任何额外的操作。

所以如果我们假设目录结构是这样的

代码语言:javascript
复制
 ROOT
 `-- package
     |-- __init__.py
     `-- tests
         `-- __init__.py

试着做python -c import package --什么时候有效,什么时候失败?

这很简单。除非您从ROOT内部调用该命令,否则它在任何地方都会失败。其他任何地方都不知道package

原因是Python保留了一个路径列表(sys.path),用于标记包和模块的根。将采用语句import package,并在遍历sys.path中的所有条目时搜索package.py、其中包含__init__.pypackage-dir或其他一些情况(C扩展、新样式名称空间包)

那么ROOT在这个路径列表中处于什么位置呢?很简单: Python解释器总是将当前工作目录添加到路径列表中。

总结一下:只需在ROOT中调用nose即可。

还有其他方法可以将路径添加到sys.path,例如使用virtualenvs。然后你可以从任何地方导入package,只要你使用venv解释器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32487680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档