Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 鼻测试及;进口_Python_Pycharm_Nose - Fatal编程技术网

Python 鼻测试及;进口

Python 鼻测试及;进口,python,pycharm,nose,Python,Pycharm,Nose,我对Python还很陌生。目前我正在试用PyCharm,我遇到了一些在运行测试时无法解释的奇怪行为 我目前正在处理的项目位于一个名为PythonPlayground的文件夹中。此文件夹包含一些子目录。每个文件夹都包含一个init.py文件。一些文件夹包含nosetest测试 当我从项目目录中的命令行使用nosetest运行程序运行测试时,我必须将“PythonPlayground”放在所有本地导入的前面。例如,在“ui”文件夹中导入名为“model”的模块时,我必须按如下方式导入: 从Pytho

我对Python还很陌生。目前我正在试用PyCharm,我遇到了一些在运行测试时无法解释的奇怪行为

我目前正在处理的项目位于一个名为PythonPlayground的文件夹中。此文件夹包含一些子目录。每个文件夹都包含一个init.py文件。一些文件夹包含nosetest测试

当我从项目目录中的命令行使用nosetest运行程序运行测试时,我必须将“PythonPlayground”放在所有本地导入的前面。例如,在“ui”文件夹中导入名为“model”的模块时,我必须按如下方式导入:

从PythonPlayground.ui.model导入*

但是当我从Pycharm内部运行测试时,我必须再次删除前面的“PythonPlayground”,否则测试将无法工作。像这样:

从ui.model导入*

我也在尝试mock框架,出于某种原因,这个框架总是需要模块的完整名称(包括“PythonPlayground”)。不管我是从命令行还是从PyCharm内部运行测试:

使用补丁('PythonPlayground.ui.models.User')作为模拟:


有人能给我解释一下行为上的差异吗?正确的行为是什么?

我认为这是因为PyCharm有自己的解释器“副本”,解释器有自己版本的sys路径,您可以将根集投影到比PythonPlayground目录低一级的位置。 您可以在项目的PyCharm中找到解释器的首选项,并设置适当的顶层。
另外,我也有同样的问题,但在Eclipse+pydev中,正如答案所示,这似乎是正确的。这确实是正确的。将源文件移动到名为“src”的目录,并在项目设置中将此目录标记为源目录,解决了以下问题:)