尝试运行 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 install
ing 我需要的东西来解决这个问题。没有问题。
现在,当我尝试运行 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.hnj
或pyhyphen
包本身?
尝试从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 时出现几个错误