我一直在使用PyCharm开发一个子模块,用于其他几个项目。我有一个包含单元测试的测试目录,我想从PyCharm运行它们,但是当我测试包含相关导入的代码时,我得到:
"ValueError:超越顶层包的相对导入尝试“
我的结构大致是:
一个
粉末冶金____init____.py
特别是..。
B
粉末冶金____init____.py
特别是..。
测试
粉末冶金____init____.py
特别是..。
在这里,我在B模块中测试一个函数,它使用相对导入来导入A:
from ..A import some_fn
这里的这个线程( pycharm and unittesting - structuring project )引用了标记测试目录的方法,但是当我右键单击它时,我只能选择将它标记为没有任何效果的源根。
我也不能真正改变相对于绝对导入,因为它将破坏我在其他项目中使用它作为子模块的能力。任何关于如何解决这个问题的建议都将不胜感激。
Update:我也遇到了这个线程How to properly use relative or absolute imports in Python modules?,我并不是这个解决方案的超级粉丝(我不希望镜像导入在try/How to properly use relative or absolute imports in Python modules?块中),但它确实解决了这个问题。我仍然希望有一个更优雅的解决方案,但如果不是,那实际上就修复了错误。
发布于 2013-11-18 21:44:19
这里的问题是A和B是不同的包。您希望它们都是myproj包的子包。
我认为您所缺少的只是父目录中的一个__init__.py文件。允许您从B中相对导入A中的某些内容
myproj/
├── A
│ └── __init__.py
├── B
│ └── __init__.py
└── __init__.pyhttps://stackoverflow.com/questions/19946841
复制相似问题