仅在PyCharm中尝试了相对顶级包消息以外的相对导入

时间:2018-06-19 19:57:11

标签: python pycharm python-3.7

更新:如果我将Customers (id, Name, ReferredBy)模块的名称(发生导入错误)更改为select,问题就消失了!什么?

首先,当我尝试从命令行导入程序包或在项目目录中运行pytest时,一切正常。

但是在PyCharm中,尝试运行测试时会遇到“尝试超出顶级程序包的相对导入”的问题,并且仅在PyCharm中出现。我不知道为什么。

我什至删除并重新克隆了存储库,问题仍然存在。

这里是问题分支的link

这是tb:

select1

我确定这里有些简单的事情,但我只是想不通。注意:我正在使用Python 3.7 RC 1。

pycharm中的Testing started at 4:02 PM ... C:\Users\ricky\AppData\Local\Programs\Python\Python37\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1.2\helpers\pycharm\_jb_pytest_runner.py" --path C:/Users/ricky/PycharmProjects/candejar/tests Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1.2\helpers\pycharm\_jb_pytest_runner.py", line 10, in <module> from pkg_resources import iter_entry_points File "C:\Users\ricky\AppData\Local\Programs\Python\Python37\lib\site-packages\pkg_resources\__init__.py", line 36, in <module> import email.parser File "C:\Users\ricky\AppData\Local\Programs\Python\Python37\lib\email\parser.py", line 12, in <module> from email.feedparser import FeedParser, BytesFeedParser File "C:\Users\ricky\AppData\Local\Programs\Python\Python37\lib\email\feedparser.py", line 27, in <module> from email._policybase import compat32 File "C:\Users\ricky\AppData\Local\Programs\Python\Python37\lib\email\_policybase.py", line 9, in <module> from email.utils import _has_surrogates File "C:\Users\ricky\AppData\Local\Programs\Python\Python37\lib\email\utils.py", line 29, in <module> import socket File "C:\Users\ricky\AppData\Local\Programs\Python\Python37\lib\socket.py", line 52, in <module> import os, sys, io, selectors File "C:\Users\ricky\AppData\Local\Programs\Python\Python37\lib\selectors.py", line 12, in <module> import select File "C:\Users\ricky\PycharmProjects\candejar\candejar\select.py", line 24, in <module> from . import exc ImportError: attempted relative import with no known parent package Process finished with exit code 1 与命令行相同,只是pycharm还包括pycharm项目主包目录(由于某种原因,它们会出现两次)。

1 个答案:

答案 0 :(得分:0)

我能够通过从克隆的存储库中删除.idea目录并重新打开PyCharm来解决此问题。我仍然不知道出什么问题了,但现在已解决。很奇怪。

更新:它与.iml文件夹中项目.idea文件中的以下行有关:

<sourceFolder url="file://$MODULE_DIR$/candejar" isTestSource="false" />

删除该xml代码即可解决此问题。但是我不知道为什么,而且我也不知道它是如何到达那里的(我不记得在发生此错误之前弄乱了我的任何设置)。