pythonpython-3.xpython-import

No module named 'core' when using pyping for Python 3


I am trying to import pyping for Python 3 but I am getting below error:

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'
>>>

Update 1

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

Solution

  • This is because of absolute imports being in effect (more precisely, the lack of implicit relative imports) for Python 3 and the fact that the pyping module was most likely only written for Python 2. Whereas in Python 2 you can do:

    from core import *
    

    In Python 3 (or if you have from __future__ import absolute_import in Python 2), you have to do:

    from .core import *
    

    or

    from pyping.core import *
    

    You have two options:

    1. ask the module author to make it compatible with Python 3
    2. fork it yourself and make it compatible with Python 3 (you can look into using 2to3 for this)