【问题标题】:No module named 'core' when using pyping for Python 3为 Python 3 使用 pyping 时没有名为“核心”的模块
【发布时间】:2016-02-11 04:46:03
【问题描述】:

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

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__

【问题讨论】:

  • 这是构建日期,默认,2015 年 10 月 14 日,20:28:29) 吗?
  • @bernie 和任何解决方案?我试过谷歌但找不到
  • 你能不能执行 ll 或 ls 命令来验证 core.py 是否在文件夹 /usr/local/lib/python3.4/dist-packages/pyping/ 中
  • @goCards 我更新了我的问题。请检查。

标签: python python-3.x python-import


【解决方案1】:

这是因为绝对导入对 Python 3 有效(更准确地说,缺少隐式相对导入)以及 pyping 模块很可能只为 Python 2 编写的事实。而在 Python 2 中,您可以做:

from core import *

在 Python 3 中(或者如果你在 Python 2 中有 from __future__ import absolute_import),你必须这样做:

from .core import *

from pyping.core import *

你有两个选择:

  1. 请模块作者使其兼容 Python 3
  2. 自己 fork 并使其与 Python 3 兼容(您可以考虑使用 2to3 来实现)

【讨论】:

  • 谢谢,我会选择第二个。但是要制作 2to3,我需要获得模块作者的许可/批准吗?
  • @Raja 该项目的license是GPLv2,也就是说你可以随意修改它,前提是如果你出售或分发它,你需要提供(现在修改的)源在同一许可证下。请参阅GPL FAQs
  • 2to3 不能直接工作,并且也为 python 3 提供了 2 个解决方案。任何其他想法
  • @Raja 没有其他办法。 2to3 不是一个完全自动化的解决方案。您必须调试代码并将其移植到 Python 3。
【解决方案2】:

您可以使用ping3 库。但它 requires 您机器上的 root 权限。 This link 显示了解决方法(允许在没有 root 的情况下使用 ping 的非特权 ICMP 套接字)。

【讨论】:

    猜你喜欢
    • 2013-01-06
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2013-01-03
    • 2012-12-14
    • 2019-09-03
    相关资源
    最近更新 更多