在Python 3中使用pyping时,没有名为“ core”的模块


问题内容

我正在尝试pyping为Python 3导入,但出现以下错误:

virt01@virt01:~/Python_Admin$ python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyping
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/dist-packages/pyping/__init__.py", line 3, in <module>
    from core import *
ImportError: No module named 'core'
>>>

更新1

virt01@virt01:~/Python_Admin$ ls /usr/local/lib/python3.4/dist-packages/pyping/
core.py  __init__.py  __pycache__

问题答案:

这是因为对于Python 3而言,绝对导入有效(更确切地说,缺少隐式相对导入),并且该pyping模块很可能仅是针对Python
2编写的。而在Python 2中,您可以执行以下操作:

from core import *

在Python 3中(或者如果from __future__ import absolute_import在Python
2中具有),则必须执行以下操作:

from .core import *

要么

from pyping.core import *

您有两种选择:

  1. 要求模块作者使其与Python 3兼容
  2. 自己进行分叉,使其与Python 3兼容(您可以研究使用2to3它)