在VSCode的Jupyter Notebook中无法使用导入。

7

我有一段非常简单的代码,在Python 3.7上运行得很顺利:

import academic_data_settings as local_settings
import pandas as pd
import glob
import os

def get_all_data():
    all_files = glob.glob(os.path.join(local_settings.ACADEMIC_DATA_SOURCE_PATH, "*.csv"))
    df_from_each_file = [pd.read_csv(f) for f in all_files]
    concatenated_df = pd.concat(df_from_each_file, ignore_index=True)
    return concatenated_df

if __name__ == "__main__":
    raw_data = get_all_data()
    print(raw_data)

然而,将数据可视化在pandas dataframe中是相当困难的。为了查看数据,我找到了以下文章,介绍如何直接从VSCode使用Jupyter notebook:https://devblogs.microsoft.com/python/data-science-with-python-in-visual-studio-code/。为了能够看到Python交互窗口,我需要将代码转换为jupyter代码块。
#%%
import academic_data_settings as local_settings
import pandas as pd
import glob
import os

def get_all_data():
    all_files = glob.glob(os.path.join(local_settings.ACADEMIC_DATA_SOURCE_PATH, "*.csv"))
    df_from_each_file = [pd.read_csv(f) for f in all_files]
    concatenated_df = pd.concat(df_from_each_file, ignore_index=True)
    return concatenated_df

if __name__ == "__main__":
    raw_data = get_all_data()
    print(raw_data)

只要我尝试运行或调试该单元格,就会在第一行出现异常:
import academic_data_settings as local_settings...
ModuleNotFoundError: No module named 'academic_data_settings'

我认为单元格评估只发送当前单元格的代码。这正确吗? 有没有办法让导入正常工作? 我不想在Jupyter笔记本中编写代码,然后将代码复制到最终将成为“生产”代码的位置。

你的 academic_data_settings 包在哪里?当你运行 VSCode 时,它是否与主代码位于同一位置? - Lamanus
@Lamarus 它坐落在我运行的文件旁边。 - E. Jaep
2个回答

16

我遇到了类似的问题。我可以在vscode终端中的IPython中导入模块,但无法在vscode交互窗口(或jupyter笔记本)中导入模块。

.vscode/settings.json文件从原来的设置更改为:

{
"python.pythonPath": "/MyPythonPath.../bin/python"
}
to
{
"python.pythonPath": "/MyPythonPath.../bin/python"
"jupyter.notebookFileRoot": "${workspaceFolder}"
}

解决了我的问题。


2
这个绝对应该标记为答案。非常感谢,你刚刚帮我节省了好几个小时的搜索时间。 - Mattkwish
这个可以运行。但是请注意,python.pythonPath已经改为python.defaultInterpreterPath。 - kingkobain99

2

Jaep。我是这个扩展的开发者,根据这个评论,我认为我知道这里发生了什么:

@Lamarus它坐在我运行的文件旁边

VSCode的Python交互功能与Jupyter使用略有不同的相对加载路径。在VSCode中,相对路径是相对于您打开的文件夹/工作区,而不是相对于文件的位置(与Jupyter相反)。要解决此问题,您可以将路径更改为academic_data_settings相对于打开的文件夹,或者您可以在设置中设置笔记本文件根目录,以指向您希望该工作区成为工作根目录的位置。如果您想投票支持在此处使用当前文件位置作为笔记本文件根目录,我们有一个错误。

https://github.com/microsoft/vscode-python/issues/4441


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接