运行setup.py测试时,子包上的ImportError

| 我正在尝试为包含项目单元测试的Python项目创建安装包。我的项目布局如下:
setup.py
src/
    disttest/
        __init__.py
        core.py
tests/
    disttest/
        __init__.py
        testcore.py
我的
setup.py
看起来像这样:
from distutils.core import setup
import setuptools

setup(name=\'disttest\',
      version=\'0.1\',
      package_dir={\'\': \'src\'},
      packages=setuptools.find_packages(\'src\'),
      test_suite=\'nose.collector\',
      tests_require=[\'Nose\'],
      )
文件“ 3”包含行“ 4”。 现在运行
setup.py test
得到
ImportError: No module named core
。 在
setup.py install
之后,
python -c \"from disttest.core import DistTestCore\"
正常工作。如果我将ѭ9放到ѭ10中也可以使用,但是我真的不想保留它,这似乎只是测试所必需的。 这是为什么?正确的解决方法是什么?     
已邀请:
您可能需要仔细检查一下,但是看来您的测试是在
tests/
目录中导入
disttest
软件包,而不是从
src/
目录中的被测软件包。 为什么需要使用与被测软件包同名的软件包?我只是将testcore模块移至tests目录,或者重命名
tests/disttest
软件包,从而完全避免了潜在的命名冲突。 无论如何,您都想在导入失败之前插入
import pdb; pdb.set_trace()
行,并处理不同的导入语句以查看从何处导入内容(
import sys; sys.modules[\'modulename\'].__file__
是您的朋友),以便您更好地了解出了什么问题。     

要回复问题请先登录注册