我有一个这样的文件结构:
project_folder/
notebooks/
notebook01.ipynb
notebook02.ipynb
...
notebookXY.ipynb
module01.py
module02.py
module03.py
在中。ipynb
笔记本中的文件我想从module01导入类和函数。py,module02。py
和模块03。py
。
我已经找到了这个问题的答案,可以在每个笔记本中使用以下代码行,并每次将这些代码行作为第一个单元格运行:
import os
import sys
module_path = os.path.abspath(os.path.join('..'))
if module_path not in sys.path:
sys.path.append(module_path)
有没有更好的办法?如果我有很多,该怎么办。ipynb
笔记本中的文件文件夹,我是否必须将这些代码行粘贴到每一行的开头?有更好、更简约或更干净的方法吗?
另一个解决方案是将所有Python模块(.py文件)移动到一个文件夹中,并使它们成为可安装的包。如果pip
将其安装到当前环境中,则可以将该软件包导入该环境中的任何笔记本,而不考虑文件夹结构。
所以在你的情况下,你可以:
project_folder/
notebooks/
notebook01.ipynb
notebook02.ipynb
...
notebookXY.ipynb
my_package/
__init__.py
module01.py
module02.py
module03.py
setup.py
基本设置。py可以如此简单:
import setuptools
setuptools.setup(
name="my_package",
version="0.0.1",
description="A small example package",
packages=setuptools.find_packages(),
python_requires='>=3.7',
)
安装它:
cd project_folder
pip install [-e] .
包括可选的-e
标志将在可编辑模式下安装my_package,这意味着将创建一个符号链接到它们所在的文件,而不是将文件复制到虚拟环境中。
现在,在任何笔记本中,您都可以执行以下操作:
导入我的\u包
或
我的_包中的。模块01导入
尝试将project\u文件夹添加到
PYTHONPATH
环境变量中。这将允许您告诉python在该目录中搜索导入。
您可以在用户配置文件设置中或在启动脚本中执行此操作,而不是在python中。在python运行之前,必须对其进行设置。
问题内容: 我有以下内容: 我正在尝试从父目录导入。在这种情况下,我尝试从测试文件夹中运行“ UnitTest1.py”,并从其上方的目录(文件“ ModuleFile.py”)导入。 我知道已经有很多答案。 SO问题1,SO问题2,其他所有SO问题。我只是找不到“使用../”作为相对导入而不是显式路径。 我知道从Python 2.5开始,根据提到使用的文档,它们支持“相对导入”,但是我专门尝试这
问题内容: 如何导入驻留在父目录中的模块(python文件)? 这两个目录中都有文件,但是我仍然无法从父目录导入文件? 在此文件夹布局中,脚本B尝试导入脚本A: 脚本B中的以下代码不起作用: 问题答案: 您无需在Python中导入脚本,而可以导入模块。一些python模块也是可以直接运行的脚本(它们在模块级别上做了一些有用的工作)。 通常,最好使用绝对进口,而不是相对进口。 在: 如果您想作为脚本
问题内容: 目录结构: module1.py: 我如何才能将所有模块从模块添加到主类而没有前缀(即像foo = fooBar()一样使用它们,而不是foo = my_modules.module1.fooBar())。 一个明显的决定是在main.py中编写如下内容: 但是我不想在创建新的moduleN时更改main.py。有解决方案吗? 我确实知道导入这样的类不是一个好主意,但是我对此仍然很好奇
我想将一些通用功能外包给一个模块中的多个笔记本电脑(也用于测试目的)。当前目录结构如下所示 在中,有一个简单的函数 然而,当我想导入和使用在通过使用(我认为有意义的) 我得到一个。我做错了什么?我正在使用Python 3.9。
问题内容: 我有一个类似于以下内容的目录结构 当在工作,如果我尝试使用相对导入来访问函数在有: 我收到以下错误: 有什么办法可以使用相对导入来使它起作用? 注意,笔记本服务器是在目录级别实例化的,因此它应该有权访问这些文件中的信息。 同样要注意的是,至少没有按照最初的意图被认为是模块,因此没有文件,它只是作为文件系统目录。如果要解决问题,则需要将其视为模块并包括一个很好的文件(甚至是空白文件),但
干杯大家, 我需要python 3.6的帮助。所以我有这样的数据结构: 我目前正在主目录所在的目录下工作,所以我不需要在此之前指定路径。首先,我想遍历主目录,找到所有子目录。然后我想在他们每一个人身上找到。wav文件,当处理完这些文件后,我想转到下一个子目录,以此类推,直到它们都被打开。处理wav文件。这正是我想做的。wav文件被输入到我的程序中,处理它们,这样我就可以把它们转换成numpy数组,