无法从“变形金刚”(未知位置)导入名称“管线”

时间:2020-07-21 18:35:48

标签: python jupyter-lab huggingface-transformers

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

from transformers import pipeline

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

我正在使用jupyter-lab,并且配置为使用virtual-env(一个包含变压器模块的虚拟环境)。

我已经搜索了类似的问题,但是没有一个建议的解决方案起作用(例如重新安装 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']

code_test.py中sys.path的输出:

['/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']

1 个答案:

答案 0 :(得分:1)

通常,当您遇到这样的问题:导入在一个环境(脚本code_test.py)中工作而在另一个环境(jupyter-lab)中工作时,则需要比较带有{{1}的模块的搜索路径}以及带有 url = "opc.tcp://127.0.0.1:50" client = Client(url) client.connect() print("Client connected!") boilingHeat = client.get_node("ns=2;i=2") #h = 2.5 # sample time #tend = 200 # stop time n=int(tend/h) isClientConnected.set_value(True) t1_start = time.perf_counter() for i in range(n): t1_stop = time.perf_counter() elapsed_time = t1_stop - t1_start boilingHeat_in = ramp(elapsed_time) boilingHeat.set_value(boilingHeat_in) if elapsed_time < h*(i+1): print("Holding for some time:", h*(i+1) - elapsed_time) print("Current value for boilingHeat is : ", boilingHeat_in) time.sleep(h*(i+1) - elapsed_time) client.disconnect() 的模块位置(在这种情况下为sys.path)。

在比较两种环境的MODULE.__file__的输出时,您会注意到transformers.__file__仅在一个列表中列出,而这正是从中加载变压器模块的位置({{1的输出}}。这意味着jupyter-lab没有使用您的虚拟环境。

您需要做的就是通过以下方式为jupyter-lab注册您的环境:

sys.path

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