Python PyCharm在不同文件夹中导入同名文件

Python PyCharm在不同文件夹中导入同名文件,python,pycharm,Python,Pycharm,我正在使用PyCharm完成python作业。我创建了“作业01”、“作业02”等文件夹。在每个作业文件夹中,我有2个python文件。“Helper.py”和“Demo.py”。在“Demo.py”中,我必须导入Helper文件。我使用 import Helper 但是PyCharm无法识别这一点,除非我将包含Helper文件的目录标记为Sources Root。因此,我将目录“Assignment 01”标记为Sources Root。一切都很好。现在,我从“作业02”开始。在“作业02”

我正在使用PyCharm完成python作业。我创建了“作业01”、“作业02”等文件夹。在每个作业文件夹中,我有2个python文件。“Helper.py”和“Demo.py”。在“Demo.py”中,我必须导入
Helper
文件。我使用

import Helper
但是PyCharm无法识别这一点,除非我将包含
Helper
文件的目录标记为
Sources Root
。因此,我将目录“Assignment 01”标记为
Sources Root
。一切都很好。现在,我从“作业02”开始。在“作业02”的“Demo.py”中,我导入了
Helper
。这将从“作业01”而不是“作业02”导入
Helper
。即使我将“Assignment 02”标记为
Sources Root
,PyCharm仍然从“Assignment 01”中引用“Helper.py”。如何使PyCharm引用同一文件夹中的“Helper.py”

注意:我不想将不同的作业作为不同的项目打开。我想有一个单一的项目的一切


我们也欢迎任何其他建议、惯例和最佳做法。谢谢

您可以将根项目文件夹设置为
Sources root


之后,要从Assignment01导入帮助程序,只需对Assignment02执行导入Assignment01.Helper和导入Assignment02.Helper。

在同一项目中不需要标记为源根。
Assignment 0*
是否真的只是文件夹或Python包(即它们是否有
\uuuu init\uuuuuuuuuuuupy
文件)?否。它们没有
\uuuu init\uuuuuuuuuuuuupy
。它们只是文件夹<代码>作业0*是某些子文件夹下的子文件夹。可能这就是为什么它要求我将其标记为
Sources Root
。我不太清楚为什么需要我做标记。但是如果我没有标记它,PyCharm会给出一个错误,说没有找到名为Helper的模块。可能是因为我在不同的文件夹下有多个同名文件?那么你肯定应该通过将这些文件添加到每个文件夹中来将它们转换为包。它可以是空的,它必须存在。然后您可以导入为@hornhound,其答案如下所述。是的,这些文件是。它们将文件夹转换为导入程序可以在
sys.path
中指定的所有目录中搜索的包,其中包含所有内部文件夹,如
site packages
,以及您可以添加的所有其他文件夹,例如使用
PYTHONPATH
环境变量。将它们设置为
Sources Root
的问题是,一旦您尝试从PyCharm外部运行使用这些模块的程序(例如shell),这将不起作用。通常情况下,PyCharm会自动将项目根添加到
sys.path
,因此您不需要直接在项目文件夹中使用
\uuu init\uuuuuuuuuy
。但是,当您创建子模块时,您需要将它一直放在包中。不,空间不是个好主意。他们从软件包内部工作,相对导入,但不从外部工作。最好避开它们。