更新:如果我将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项目主包目录(由于某种原因,它们会出现两次)。
答案 0 :(得分:0)
我能够通过从克隆的存储库中删除.idea
目录并重新打开PyCharm来解决此问题。我仍然不知道出什么问题了,但现在已解决。很奇怪。
更新:它与.iml
文件夹中项目.idea
文件中的以下行有关:
<sourceFolder url="file://$MODULE_DIR$/candejar" isTestSource="false" />
删除该xml代码即可解决此问题。但是我不知道为什么,而且我也不知道它是如何到达那里的(我不记得在发生此错误之前弄乱了我的任何设置)。