尝试运行 python 包时出现“RuntimeError: invalid slot offset”

Posted

技术标签:

【中文标题】尝试运行 python 包时出现“RuntimeError: invalid slot offset”【英文标题】:"RuntimeError: invalid slot offset" on trying to run python package 【发布时间】:2021-06-01 13:01:58 【问题描述】:

我将pyhyphen 包用于我一直运行的脚本。最近,我更新到了 MacOS Big Sur。 Spyder 很迟钝,但我通过运行虚拟环境和pip installing 我需要的东西来解决这个问题。没有问题。

现在,当我尝试运行 from hyphen import Hyphenator (here is the package page) 时,出现以下错误:

[autoreload of hyphen.dictools failed: Traceback (most recent call last):
  File "/Users/myname/anaconda3/lib/python3.8/site-packages/IPython/extensions/autoreload.py", line 245, in check
    superreload(m, reload, self.old_objects)
  File "/Users/myname/anaconda3/lib/python3.8/site-packages/IPython/extensions/autoreload.py", line 394, in superreload
    module = reload(module)
  File "/Users/myname/anaconda3/lib/python3.8/imp.py", line 314, in reload
    return importlib.reload(module)
  File "/Users/myname/anaconda3/lib/python3.8/importlib/__init__.py", line 159, in reload
    raise ImportError(msg.format(parent_name),
ImportError: parent 'hyphen' not in sys.modules
]


runcell(0, '/Users/myname/Documents/project/project.py')
Traceback (most recent call last):

  File "/Users/myname/Documents/project/project.py", line 17, in <module>
    from hyphen import Hyphenator

  File "/Users/myname/anaconda3/lib/python3.8/site-packages/hyphen/__init__.py", line 10, in <module>
    from .hyphenator import Hyphenator

  File "/Users/myname/anaconda3/lib/python3.8/site-packages/hyphen/hyphenator.py", line 27, in <module>
    from . import hnj

RuntimeError: invalid slot offset

from hyphen import Hyphenator 是脚本中的唯一行。我已经尝试卸载/重新安装该软件包六百次 - 我找不到任何针对 invalid slot offset 的解决方案。所有其他包都可以正常导入,没有问题。

Spyder(在 Anaconda 中)正在运行 python 版本 3.8.5。我安装了非 anaconda 3.9,但我无法想象这有什么影响,因为我在虚拟环境中运行 spyder。

【问题讨论】:

如果不知道 project.py 中的内容,将很难提供帮助。认为这不是一个 spyder 问题 @user3732793 除了一些基本的pandas 数据操作、random 包和pyhyphen 错误之外,@user3732793 在project.py 中不多 当您从头创建一个新的 conda 环境并使用该单行创建一个空白项目时,您能否重现相同的错误? @RiccardoBucco - 刚刚做了 - 新的空白环境,新空白项目中的一行脚本 - 相同的偏移错误 您能否验证该库是否安装在正确的路径中?这可能与 Python 加载的不兼容版本有关。 【参考方案1】:

在setup.py的这行代码中安装包时似乎有问题

ext_modules=[
        Extension('hyphen.hnj', ['lib/hnjmodule.c',
                                 'lib/hyphen.c',
                                 'lib/hnjalloc.c'],
                  include_dirs=['lib'],
                  py_limited_api=True)
                  ],

hnj 包编译不正确

尝试手动安装和构建包

【讨论】:

所以我尝试了这个 - 仍然遇到同样的错误。你的意思是安装和构建hyphen.hnjpyhyphen 包本身? 尝试从github获取pyhyphen,然后使用python3 setup.py install安装看看有没有错误 拿到包,解压,运行python3 setup.py install - 没有错误。运行时脚本中仍然存在相同的错误。也许下载需要一分钟才能传播到 Anaconda 本身? 将模块文件夹复制到您的项目文件夹然后尝试像这样构建它 python setup.py build_ext -i 这将构建它,在这种情况下您必须在同一目录中测试扩展【参考方案2】:

我建议你通过anaconda 安装,而不是pip

source /Users/myname/anaconda3/bin/activate
conda install -c auto pyhyphen

【讨论】:

我希望,在任何 anaconda 频道中都不起作用/找不到该软件包。得到这个:PackagesNotFoundError: The following packages are not available from current channels: - 会很好,但是唉

以上是关于尝试运行 python 包时出现“RuntimeError: invalid slot offset”的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 json_serializable 包运行 android 模拟器时出现 Flutter 编译错误

尝试运行可执行 Python 脚本时出现致命的 Python 错误

尝试使用 python 3 运行 Spark 时出现几个错误

运行选定的编码生成器时出现错误:'包恢复失败。没有详细错误

安装 python 的 Postal (Address Parser) 包时出现问题

尝试运行已编译的 Cython 代码时出现“python39.dll not found”错误 [重复]