Ray*_*Ray 5 python import pycharm jupyter
我的目录结构如下。
project/
jupyter/
note.ipynb
src/
some_script.py
another_script.py
Run Code Online (Sandbox Code Playgroud)
该jupyter
子目录包含 Jupyter 笔记本,该src
子目录包含我的.py
文件。该src
子目录被标记为源根目录。
在 Jupyter 笔记本中note.ipynb
,如果我这样做import some_script
,那么我就得到了ImportError: No module named 'some_script'
。然而,from src import some_script
工作正常,但如果some_script
也有一条线就不行了import another_script
。在我看来,我认为有一个设置或开关可以将src
子目录添加到默认情况下 Jupyter Notebook 环境使用的目录中PYTHONPATH
,但我不知道该怎么做,你能帮忙吗?
我知道我始终可以使用它sys.path.append
,但我不想在我创建的每个 Jupyter 笔记本中都这样做。我还知道我可以将.ipynb
文件和.py
文件放在同一个子目录中,但我不喜欢以这种方式组织我的工作。最后,我知道我可以将项目目录设置为我的源根目录而不是子目录src
,但这意味着我必须from src import ...
在脚本中的所有位置执行.py
此操作,显然我不想这样做。正如我上面所描述的,这个问题有解决方案吗?
在我看来,我认为有一个设置或开关可以将 src 子目录添加到
PYTHONPATH
Jupyter Notebook 环境默认使用的目录中
是的,您可以为每个内核设置 ENV 变量,但您需要找到存储这些变量的位置。
你可以为此奔跑,然后在其中jupyter kernelspec list
打开一个。kernel.json
例如,这个来自我的 PySpark Jupyter 内核。
查看env: { "PYTHONPATH":
变量。
{
"argv": [
"/Users/name/Library/Jupyter/kernels/apache_toree_pyspark_16/bin/run.sh",
"--profile",
"{connection_file}"
],
"env": {
"DEFAULT_INTERPRETER": "PySpark",
"__TOREE_SPARK_OPTS__": "",
"__TOREE_OPTS__": "",
"SPARK_HOME": "/usr/local/opt/apache-spark@1.6/libexec",
"PYTHONPATH": "/usr/local/opt/apache-spark@1.6/libexec/python:/usr/local/opt/apache-spark16/libexec/python/lib/py4j-0.9-src.zip",
"PYTHON_EXEC": "python"
},
"display_name": "Apache Toree - PySpark (1.6)",
"language": "python"
}
Run Code Online (Sandbox Code Playgroud)