我的项目结构如下project_name/
project_name/
__init__.py
sub_package1/
__init__.py
some_module1.py
sub_package2/
__init__.py
some_module2.py
scripts/
some_script.py
notebooks/
some_notebook.py
top level files
现在,我希望能够在脚本文件夹中的python脚本和位于notebooks文件夹中的笔记本中访问我的主库
^{pr2}$
实现这一目标的最佳方法是什么?
我想出了一些点子:
1)
在“我的笔记本”文件夹中,创建一个文件上下文.py有了内容sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
那么,在我的笔记本里我可以做到from context import project_name
从那里开始工作。这很好,但是如果能够直接导入项目名称而不需要在我的笔记本中输入上下文,那就更好了。在
2)
在笔记本上执行notebook_dir = os.path.split(os.getcwd())[0]
if notebook_dir not in sys.path:
sys.path.insert(0, notebook_dir)
因为dunder文件不存在于交互式shell中。在这里,我不完全确定如果我在某处更改cwd会发生什么,毕竟在我的笔记本开头出现这种混乱是不可取的。在
3)
将project_name根文件夹添加到python路径中。如果这可以用非硬编码的方式来实现,那就太好了。我使用pyenv和pyenv virtualenv。在
谢谢你的建议,
马特