我是Python新手。目前我正在尝试PyCharm,我遇到了一些奇怪的行为,我在运行测试时无法解释。
我目前正在处理的项目位于名为PythonPlayground的文件夹中。该文件夹包含一些子目录。每个文件夹都包含 init .py文件。有些文件夹包含鼻子测试。
当我从项目目录中的命令行使用nosetest runner运行测试时,我必须将“PythonPlayground”放在我所有本地导入的前面。例如。当在文件夹“ui”中导入名为“model”的模块时,我必须像这样导入它:
来自PythonPlayground.ui.model import *
但是当我从Pycharm内部运行测试时,我必须再次删除前导“PythonPlayground”,否则测试不起作用。像这样:
来自ui.model import *
我也在尝试使用模拟框架,由于某种原因,这个框架总是需要模块的完整名称(包括“PythonPlayground”)。无论我是从命令行还是从PyCharm内部运行测试都没关系:
将patch('PythonPlayground.ui.models.User')作为模拟:
有人可以向我解释行为的差异吗?什么是正确的行为?
答案 0 :(得分:1)
我认为这是因为PyCharm有自己的解释器“副本”,它有自己的sys路径版本,你将根目录设置为低于PythonPlayground目录的一个级别。 你可以在你的项目中找到PyCharm中解释器的偏好并设置适当的顶级。 PS。我有相同的问题,但在Eclipse + pydev