当我使用(代码)__import__
直接或间接运行时importlib.import_module
python setup.py test
产生TypeError
或类似的错误,表明该NoneType
对象不能做某事。一些探索显示,调用None
后立即出现importlib
:模块中定义的所有全局变量现在都分配了这个值。如果我不运行测试,这不会发生。此外,如果我从另一个目录导入,则不会发生这种情况(在导入模块时,例如powerline.lib.vcs.git
from __init__.py
file 是powerline.lib.vcs
模块的文件,这种行为会出现,但在powerline.lib.vcs_modules
使用 empty导入时不会出现__init__.py
)。
测试是通过setuptools
使用单独目录unittest
中的测试套件来完成的。tests
Python 版本是2.7.3-r2
(-r2
代表 ebuild 修订版)。可以在这里看到错误输出。
如何解决这种行为?
更奇怪的数据:我能够创建两个目录,这样就不会diff -r --brief ~/.vam/powerline-{old,new}
返回任何更改(旧 = 错误,新 = 重新克隆,没有错误)并且diff -u <(ls -laR) <(cd ../powerline-new && ls -laR)
只报告某些目录修改时间的更改,但是对于 powerline-old 它失败了,对于 powerline-new它不是。交换目录位置不会改变结果。cp -r
也不会在其他位置复制两个目录或执行tar c
, then tar x
。
啊,travis虚拟机中的新克隆也显示了这个奇怪的错误。
任何想法这意味着什么?在哪里可以保存状态来区分这些目录?