【python问题解决】RuntimeError:NLPIR function 'NLPIR_Init' failed

本文介绍了使用pynlpir包进行文本分词时遇到的授权过期错误及其解决方法。错误提示为'NLPIR_Init'失败,原因是pynlpir的library授权已过期。解决步骤包括从GitHub下载新的NLPIR许可证并将其放置在data文件夹下,重启项目后即可正常进行分词。

今天在用python进行文本处理的过程中,出现了很多小bug,当我们在选择用nlpir包来进行分词测试的过程中,出现如下错误:


测试程序:

pynlpir.open()
    segments = ("\n汉语标注模式:" + str(pynlpir.segment(lines, pos_english=False)))
    outputs.write(segments)

错误:

<span style="font-size:14px;">Traceback (most recent call last):  
  File "<stdin>", line 1, in <module>  
  File "pynlpir/__init__.py", line 99, in open  
    raise RuntimeError("NLPIR function 'NLPIR_Init' failed.")  
RuntimeError: NLPIR function 'NLPIR_Init' failed. <span style="font-family: 宋体; background-color: rgb(255, 255, 255);"> </span></span>

我便在网上查找了一下,发现了这个错误,
错误原因:

pynlpir的library的授权过期了。

解决办法:


在GitHub上下载新的授权:NLPIR许可证,并将新的授权放到data文件夹下面,并重启项目,再次测试分词程序,分词成功。

RuntimeError: SetPrecisionMode:build/CMakeFiles/torch_npu.dir/compiler_depend.ts:155 NPU function error: at_npu::native::AclSetCompileopt(aclCompileOpt::ACL_PRECISION_MODE, precision_mode), error code is 500001 [ERROR] 2025-08-25-11:18:04 (PID:3962875, Device:0, RankID:-1) ERR00100 PTA call acl api failed [Error]: The internal ACL of the system is incorrect. Rectify the fault based on the error information in the ascend log. EC0010: [PID: 3962875] 2025-08-25-11:18:04.391.603 Failed to import Python module [AttributeError: `np.float_` was removed in the NumPy 2.0 release. Use `np.float64` instead..]. Solution: Check that all required components are properly installed and the specified Python path matches the Python installation directory. (If the path does not match the directory, run set_env.sh in the installation package.) TraceBack (most recent call last): AOE Failed to call InitCannKB[FUNC:Initialize][FILE:python_adapter_manager.cc][LINE:47] Failed to initialize TeConfigInfo. [GraphOpt][InitializeInner][InitTbeFunc] Failed to init tbe.[FUNC:InitializeTeFusion][FILE:tbe_op_store_adapter.cc][LINE:1889] [GraphOpt][InitializeInner][InitTeFusion]: Failed to initialize TeFusion.[FUNC:InitializeInner][FILE:tbe_op_store_adapter.cc][LINE:1856] [SubGraphOpt][PreCompileOp][InitAdapter] InitializeAdapter adapter [tbe_op_adapter] failed! Ret [4294967295][FUNC:InitializeAdapter][FILE:op_store_adapter_manager.cc][LINE:79] [SubGraphOpt][PreCompileOp][Init] Initialize op store adapter failed, OpsStoreName[tbe-custom].[FUNC:Initialize][FILE:op_store_adapter_manager.cc][LINE:120] [FusionMngr][Init] Op store adapter manager init failed.[FUNC:Initialize][FILE:fusion_manager.cc][LINE:115] PluginManager InvokeAll failed.[FUNC:Initialize][FILE:ops_kernel_manager.cc][LINE:83] OpsManager initialize failed.[FUNC:InnerInitialize][FILE:gelib.cc][LINE:259] GELib::InnerInitialize failed.[FUNC:Initialize][FILE:gelib.cc][LINE:184] GEInitialize failed.[FUNC:GEInitialize][FILE:ge_api.cc][LINE:371] [Initialize][Ge]GEInitialize failed. ge result = 4294967295[FUNC:ReportCallError][FILE:log_inner.cpp][LINE:161] [Init][Compiler]Init compiler failed[FUNC:ReportInnerError][FILE:log_inner.cpp][LINE:145] [Set][Options]OpCompileProcessor init failed![FUNC:ReportInnerError][FILE:log_inner.cpp][LINE:145]
最新发布
08-26
在分布式计算框架中,远程函数无法在工作节点上导入的问题通常表现为 `RuntimeError: The remote function failed to import on the worker`。这种错误通常发生在分布式计算框架(如 Ray、Dask 或 PySpark)中,远程函数或模块未能正确导入到工作节点上。以下是一些可能的原因和解决方案: ### 1. 模块导入路径问题 确保远程函数所依赖的模块在所有工作节点上都可以正确导入。如果模块不在 Python 的默认搜索路径中,可以尝试将模块路径添加到 `sys.path` 中。 ```python import sys sys.path.append("/path/to/your/module") ``` 如果使用了 Ray 框架,可以通过 `ray.init()` 的 `include_dashboard` 参数来确保所有节点都能正确加载依赖。 ### 2. 使用 Ray 的 `@ray.remote` 装饰器 在 Ray 中,远程函数需要通过 `@ray.remote` 装饰器进行定义,并确保在工作节点上能够正确访问。如果远程函数依赖于其他模块,则需要确保这些模块在所有节点上都已安装或可访问。 ```python import ray ray.init(address='auto') # 连接到现有的 Ray 集群 @ray.remote def my_remote_function(): import my_module # 确保 my_module 在所有节点上都可访问 return my_module.some_function() ``` ### 3. 使用 Dask 的 `client.upload_file()` 方法 在 Dask 中,如果远程函数依赖于本地文件或模块,可以使用 `client.upload_file()` 方法将文件上传到所有工作节点。 ```python from dask.distributed import Client client = Client("scheduler-address:8786") client.upload_file("my_module.py") # 将 my_module.py 上传到所有工作节点 def my_remote_function(): import my_module return my_module.some_function() future = client.submit(my_remote_function) result = future.result() ``` ### 4. 使用 PySpark 的 `sc.addFile()` 方法 在 PySpark 中,如果远程函数依赖于本地文件或模块,可以使用 `sc.addFile()` 方法将文件添加到所有工作节点。 ```python from pyspark import SparkContext sc = SparkContext("local", "App Name") sc.addFile("my_module.py") # 将 my_module.py 添加到所有工作节点 def my_remote_function(x): from my_module import some_function return some_function(x) result = sc.parallelize([1, 2, 3]).map(my_remote_function).collect() ``` ### 5. 检查依赖项的安装 确保所有工作节点上安装了相同的依赖项版本。可以使用 `pip freeze` 命令检查当前环境中的依赖项版本,并在所有节点上安装相同的版本。 ```bash pip install -r requirements.txt ``` ### 6. 使用容器化技术 如果工作节点的环境不一致,可以考虑使用 Docker 或其他容器化技术来确保所有节点具有相同的环境配置。这样可以避免因环境差异导致的导入问题。 ```Dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "app.py"] ``` ### 7. 日志和调试 启用分布式框架的日志记录功能,查看详细的错误信息。这有助于定位问题的根本原因。例如,在 Ray 中,可以通过 `ray logs` 命令查看工作节点的日志。 ```bash ray logs worker ``` ### 8. 使用 Ray 的 `ray.put()` 和 `ray.get()` 如果远程函数需要传递复杂对象,可以使用 `ray.put()` 将对象存储在共享内存中,并通过 `ray.get()` 在工作节点上获取对象。 ```python import ray ray.init(address='auto') data = [1, 2, 3] data_id = ray.put(data) @ray.remote def process_data(data_id): return ray.get(data_id) result = ray.get(process_data.remote(data_id)) ``` ### 9. 确保网络连通性 检查所有工作节点之间的网络连通性,确保它们能够相互通信。网络问题可能导致远程函数无法正确导入。 ### 10. 更新框架版本 确保使用的分布式计算框架版本是最新的,以避免已知的 bug 和问题。可以通过以下命令更新框架: ```bash pip install --upgrade ray ``` 通过以上方法,可以有效解决分布式计算框架中远程函数无法在工作节点上导入的问题。确保所有节点的环境一致、依赖项正确安装,并且网络配置正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HuaCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值