无法从 'transformers'(未知位置)导入名称 'pipline'

cannot import name 'pipline' from 'transformers' (unknown location)

我在 jupyter-lab 中尝试以下代码时遇到此错误:

from transformers import pipeline

令人惊讶的是,如果我将那行代码复制到 code_test.py 文件中,并使用 python3 code_test.py 执行它(在终端和 jupyter-lab 本身)一切都会正常工作。

我正在使用 jupyter-lab,它被配置为使用虚拟环境(包含 transformers 模块的环境)。

我已经搜索过类似的问题,但是 none 个建议的解决方案有效(例如重新安装 transformers 模块)。

已编辑:

jupyter-lab 中 sys.path 的输出:

['/Users/{my_username}/{path_to_my_project}/code',
 '/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
 '/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
 '/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
 '',
 '/Users/{my_username}/Library/Python/3.7/lib/python/site-packages',
 '/usr/local/lib/python3.7/site-packages',
 '/Users/{my_username}/Library/Python/3.7/lib/python/site-packages/IPython/extensions',
 '/Users/{{my_username}/.ipython']

sys.path 在 code_test.py 中的输出:

['/Users/{my_username}/{path_to_my_project}/code',
'/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
'/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
'/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
'/Users/{my_username}/{path_to_my_project}/code/env/lib/python3.7/site-packages']

一般来说,当您遇到导入在一个环境(脚本code_test.py)中工作但在另一个环境(jupyter-lab)中不工作的问题时,您需要将模块的搜索路径与sys.path 和带有 MODULE.__file__ 的模块的位置(在本例中为 transformers.__file__)。

当你比较两个环境的 sys.path 的输出时,你会注意到 '/Users/{my_username}/{path_to_my_project}/code/env/lib/python3.7/site-packages' 只在一个环境中列出,这正是 transformers 模块加载的位置([的输出=13=]).这意味着 jupyter-lab 没有使用您的虚拟环境。

您需要做的就是为 jupyter-lab 注册您的环境:

python3 -m ipykernel install --user --name=env

现在 jupyter-lab 将允许您 select 环境作为内核。