Pycharm导入RuntimeWarning在更新到2016.2之后


67

更新到新版本2016.2之后,我得到

RuntimeWarning: Parent module 'tests' not found while handling absolute import
  import unittest
RuntimeWarning: Parent module 'tests' not found while handling absolute import
  import datetime as dt

“ tests”是我的主应用程序包中的一个包,当我尝试在此文件夹中执行单元测试时会收到这些警告。此问题仅在更新到2016.2。之后出现。除了警告,其余代码也可以正常工作。

编辑:这是一个已知问题-https: //youtrack.jetbrains.com/issue/PY-20171。他们建议替换PyCharm安装文件夹中的utrunner.py。


2
是的 切换到2016.2后,我有相同的行为
Ivan Gusev

好吧,我将开一张飞往JetBrains的票。
艾伦·林

现在,我只是将旧的utrunner.py复制到2016.2-〜/ pycharm-2016.1 / helpers / pycharm / utrunner.py
Sam Kenny

我有同样的行为,这真令人讨厌!
mircealungu

1
@mircealungu-备份!
山姆·肯尼

Answers:


65

这是2016.2版本引入的一个已知问题。进程可以JetBrains的网站上这里。根据此页面,它将在2017.1版本中修复。您可以遵循其他人同时提到的utrunner.py解决方法-该文件的副本附加到链接的票证中。


7
将旧文件(/Applications/PyCharm.app/Contents/helpers/pycharm/utrunner.py)替换为要从youtrack.jetbrains.com下载的文件(下载链接)。非常适合我。
吉姆·赖特

18
pycharm-2016.2.3
Ben Schmidt

9
在2016.3中似乎未解决此问题,发生了同样的警告。
Vadim Gremyachev '16

3
在2016.3.1中似乎没有固定的问题
nevets1219 '16

4
在2016.3.2中未解决
迈克尔·迈克尔(Michael

36

最新建议(2016年12月19日)是将以下行放在单元测试脚本的顶部:

from __future__ import absolute_import

这为我解决了问题,但是我认为这不是官方建议,因为用户提到这似乎不是JetBrains开发人员。由于即使仅进行绝对导入也会出现此警告,因此添加该行是否会成为不必要的代码段,而在下一次发布后就需要将其删除?
steinar'1

是的,将来可能会需要将其删除。有关更多信息,请参见stackoverflow.com/q/7075082/584846
Brent Washburne

是的,我的意思是,在这种情况下确实没有必要,因为此特定__future__导入仅用于修复PyCharm中的错误。至少在我看来,源代码不需要修复。因此,似乎可以接受接受的答案中的建议会更好,因为那样一来,根本就不需要触摸源代码。
steinar'1

我赞成from __future__ import absolute_import。如果您的Python 2.7代码可以接受,我更喜欢使用所有将来的导入。它将简化最终迁移到Python 3.6的过程。
user7610

这是唯一对我有用的解决方案。下载其他文件utrunner.py并替换原始文件似乎无效。也许Pycharm正在缓存它;我没有尝试重新启动计算机。
马修·摩森


2

Ubuntu 16.04上, Bobby的解决方案也适用:

只需将您的本地utrunner.py文件替换为

/usr/local/pycharm-edu-3.0/helpers/pycharm/utrunner.py

由Jetbrains网站上的人撰写:http//code.metager.de/source/xref/jetbrains/intellij/community/python/helpers/pycharm/utrunner.py


我发现我的矿井安装在其他地方,但是用上面的版本替换了我的矿井之后,它们仍然可以工作-为什么他们不回滚?这样做不会使python不稳定吗?
serup '16

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.