我一直在寻找如何做到这一点的方法,但没有成功。想象一下我有一个这样的项目结构:
my_proj
- notebooks
- - a_notebook_into_which_i_want_to_import_a_class.ipynb
- src
- - a_file_with_the_class_i_want_to_import.py
我将如何编写导入语句?
我正在使用python 3.7,但也对其他python版本(如果它们不同)的正确过程感兴趣。
答案 0 :(得分:0)
从本质上讲,您需要通知Python在何处查找要导入的类。您可以通过在脚本中打印sys.path
来检查默认位置列表。通常,这是几个标准位置,包括python安装目录本身。它还将检入当前正在运行的脚本所在的目录。
由于您不能将其他文件移动到同一目录中,因此可以将其添加到PYTHONPATH
环境变量中(这使其可以被计算机上的所有脚本访问)或按顺序使用以下代码段只为您的特定脚本加载它。
该代码段仅在脚本执行期间添加路径,并且不会进行任何持久更改。
import os
import sys
from pathlib import Path
# to get the path of currently running script
path = Path(os.path.realpath(__file__))
# path.parents[0] gets the immediate parent dir (notebooks/)
# path.parents[1] is 2 levels up, i.e. my_proj/
# use path.join to get abspath of src/, and then add it to sys.path
sys.path.append(os.path.join(path.parents[1], 'src'))
from a_file_with_the_class_i_want_to_import import DesiredClass
# You should be able to use it now