对于我的 python 脚本(如下所示),我使用句子转换器包,其中包含 SBERT 模型。即使在执行“pip list”时明确列出该软件包,并且还安装了 torch,所有内容都更新到最新版本,但仍然找不到该模块。
脚本:
import numpy as np
import pandas as pd
from sentence_transformers import SentenceTransformer
# Load the SBERT model
model = SentenceTransformer('all-mpnet-base-v2')
# Load the dataset
input_file = 'PJ_whole_conversations_row_per_conversation_v1.csv'
df = pd.read_csv(input_file)
# Generate embeddings for the "message" column
messages = df['message'].tolist()
embeddings = model.encode(messages, convert_to_numpy=True)
# Save embeddings to NumPy file
output_file_numpy = 'row_per_conversation_embeddings.npy'
np.save(output_file_numpy, embeddings)
print(f'Embeddings have been generated and saved to {output_file_numpy}')
我尝试使用不同的环境。我尝试使用最新版本的 python 和软件包全局执行脚本。我正在使用 Visual Studio Code 在 Windows 11 作为操作系统上进行编码,通过它我还尝试了 conda 和 venv 作为环境。我更改了 python 和包版本来尝试不同的组合,认为版本可能不兼容。每次我都会遇到稍微不同的错误,但它总是句子转换器无法访问或无法正确访问它的变体。
最常见的是,我在某些类型中遇到以下错误,具体取决于哪个我使用的 python 版本和包:
发生异常:OSError [WinError 126] 找不到指定的模块。加载“C:\Users\nea\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\torch\lib\fbgemm.dll”或其依赖项之一时出错。 文件“C:\Users\saham\OneDrive\4.Semester\Independent Research Project\Python_scripts\row_per_conversation_word embedding.py”,第 3 行,位于 从句子转换器导入句子转换器 OSError: [WinError 126] 找不到指定的模块。加载“C:\Users\nea\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\torch\lib\fbgemm.dll”或其依赖项之一时出错。| ||由于 torch 往往是问题所在,我尝试在各种环境中卸载并重新安装 torch,但它从未修复错误。老实说,我有点束手无策,希望有人能知道一个好的解决办法。就像我说的,即使它全部安装在全新的环境中并且跨越不同的版本变体,它仍然会发生。
Since torch tended to be the issue, I tried de- and reinstalling torch in the various environments, but it never fixed the error. I'm honestly a bit at the end of my rope here and hope that someone might know a good fix. Like I said, it keeps happening even when it's all installed in a brand new environment and across different version variations.
错误消息“发生异常:OSError [WinError 126] 找不到指定的模块”即使在安装了必要的软件包(包括
sentence_transformers
和
torch
)后,通常表明存在与
PyTorch
安装或其依赖项的兼容性相关的问题。具体来说,问题似乎在于加载
torch
库中使用的
fbgemm.dll
文件。以下是解决此问题的系统步骤:
- 验证 PyTorch 安装:
- 确保已为你的 Windows 版本和 Python 版本安装了正确的 PyTorch 版本。可以通过访问 PyTorch 网站 并使用其安装选择器来完成。
-
尝试从你的环境中卸载并重新安装 PyTorch:
bash pip uninstall torch pip install torch
-
检查 Microsoft Visual C++ Redistributable:
- PyTorch 需要 Microsoft Visual C++ Redistributable for Visual Studio 才能正常运行。你可以在 此链接 找到最新版本。
-
下载并安装与你的系统架构(32 位或 64 位)匹配的可再发行组件。
-
检查环境变量:
-
确保你的系统
PATH
环境变量设置正确,并且包含 PyTorch 安装的路径。这使得你的系统可以找到必要的dll
文件。 -
在虚拟环境中测试:
-
如你所述,你尝试了不同的环境。但是,如果上述步骤均未解决问题,请尝试在一个新的虚拟环境中创建一个干净的 Python 环境并专门安装
sentence_transformers
和torch
。这可以帮助排除任何与软件包冲突或现有环境配置相关的问题。 -
与你的特定 CPU 架构的兼容性:
-
确保你使用的 PyTorch 版本与你的 CPU 架构兼容。例如,某些旧的 CPU 可能不支持较新的 PyTorch 版本。考虑检查你的 CPU 规格并相应地选择兼容的 PyTorch 版本。
-
使用 CUDA GPU 支持的 PyTorch(如果适用):
- 如果你有支持 CUDA 的 NVIDIA GPU,并且想将其用于 PyTorch,请确保安装了正确的 CUDA 版本的 PyTorch。你可以参考 PyTorch 网站上的官方说明来了解如何安装。
如果在尝试了这些步骤后仍然遇到问题,请提供以下信息,以便我进一步帮助你:
- 你的 Python 版本(例如,Python 3.8)
-
你的
sentence_transformers
和torch
版本(可以使用pip list
找到) - 你的 Windows 版本(包括架构,例如 Windows 11 64 位)
- 你的 CPU 型号
- 你是否在使用任何虚拟环境,如果是,使用的是哪一个(例如,conda、venv)
- 完整的错误消息和回溯