无法从 '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 环境作为内核。
我在 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 环境作为内核。