Python从子文件夹导入

Python从子文件夹导入,python,python-3.x,python-import,Python,Python 3.x,Python Import,我正在尝试为每个学生在单独文件夹中提交的一些python评分。为此,我要运行一个函数,比如f()。我明白,如果我的当前路径与文件所在的路径相同,我只需执行以下操作即可 import filename filename.f() 然而,还有更好的方法吗?例如,假设目录结构如下所示: main.py student/run_this.py 我知道如果学生文件夹中有一个“\uuuu init\uuuuu.py”文件,我可以直接键入 import student.run_this 但是,如果没有该文

我正在尝试为每个学生在单独文件夹中提交的一些python评分。为此,我要运行一个函数,比如f()。我明白,如果我的当前路径与文件所在的路径相同,我只需执行以下操作即可

import filename
filename.f()
然而,还有更好的方法吗?例如,假设目录结构如下所示:

main.py
student/run_this.py
我知道如果学生文件夹中有一个“\uuuu init\uuuuu.py”文件,我可以直接键入

import student.run_this
但是,如果没有该文件,它将无法工作

我发现了一些类似的问题


但是这些都没有给出特别令人满意的答案。

在文件夹
student
中创建一个
\uuuu init\uuuuuuuupy
模块,该模块应该包含

from . import *
然后,您可以将任何模块从学生文件夹调用到其父文件夹模块,如下所示:

import student.module.py

如果您发布了您面临的任何其他错误,我们可以提供进一步帮助。

那么您的
\uuuuu init\uuuuuuuy.py
文件到底有什么问题?您将
学生
文件夹添加到您的路径中,然后导入
运行此
。这就是其他答案告诉你要做的,你尝试了什么不起作用?不是因为它不起作用,而是因为它看起来不优雅。或者至少,添加_init_upy.py对我来说似乎相当令人不快——修改文件结构以访问子文件夹似乎是不道德的。对于改变路径,我读到这是一个不好的做法,但这似乎是一个合理的解决方案。你认为你可以解释(或将我与材料联系起来)为什么需要_init_uy.py吗?这确实结束了,但是我对设计逻辑是什么,有点困惑,即,在C++或Python中,PY就像类继承逻辑一样简单。当python查看一个文件夹时,它并不包括其中所有可用的模块。如果您指定python在_init__函数处进入类时要执行的函数,它会很好地理解。在这里,当python遇到一个使用_init__的文件夹时,我们只是导入必要的或所有的模块。这个答案是我能找到的唯一一个回答我遇到的问题的答案,谢谢@MathanKumar!