Import 无法从pycharm中的源目录导入模块

Import 无法从pycharm中的源目录导入模块,import,module,pycharm,python-3.6,Import,Module,Pycharm,Python 3.6,以前有人问过这个问题,但我无法用任何答案来解决它。我在pycharm中选择了一个项目文件夹(注意项目文件夹不在。/PycharmProject/…目录中) 我的结构是超基本的: project_title (folder) |--src (folder) |-- app.py |-- pipeline_tools (folder) |-- helpers

以前有人问过这个问题,但我无法用任何答案来解决它。我在pycharm中选择了一个项目文件夹(注意项目文件夹不在
。/PycharmProject/…
目录中)

我的结构是超基本的:

project_title (folder)
             |--src (folder)
                  |-- app.py  
                  |-- pipeline_tools (folder)
                     |-- helpers.py
                     |-- other modules
我尝试了所有可能的解决方案和组合,但在
app.py
中,我尝试从
tools
中的任一模块导入函数时,我会出错

此外,Pycharm用红色强调以下声明:

1)
来自管道工具。助手导入某个函数
(带“未解析引用”的红色下划线)

但以下内容并没有给我带来任何负面影响:

2)
from.pipeline\u tools.helpers导入某个函数
(无红色下划线,请注意相对导入)

模块中是否有
\uuuuu init\uuuuuu.py
这一事实没有任何变化-我仍然会遇到以下两个错误:

表1)

4) 使用以下代码将项目路径移动到sys.path的开头:
sys.path.insert(0,'path/to/project\u title')

5) 只是试着像这样打印
PYTHONPATH

os.environ['PYTHONPATH'].split(os.pathsep)
而且我的项目的目录不在其中


我现在有点不知所措。我不知道发生了什么。

出于某种可怕的原因,我不明白将
src
目录设置为我的源
,而不是
项目标题
目录(其中包含它……但我知道什么)是否有效

因此,解决办法是:

->背景 ->项目结构 ->删除以前的内容根路径,并使内容源成为
src
目录

像这样导入:

os.environ['PYTHONPATH'].split(os.pathsep)
从管道工具。助手导入函数1、函数2

注意:我的文件夹中没有
\uuuu init\uuuuuuuy.py
文件,因为我相信我读到它们不再需要了

在Python 3.3之前,文件系统目录和zipfiles中的目录必须包含init.py才能被识别为Python包目录。即使导入包时没有要运行的初始化代码,解释器仍然需要一个空的init.py文件来查找该目录中的任何模块或子包

这在Python 3.3中发生了变化:现在sys.path上任何名称与正在查找的包名称匹配的目录都将被识别为该包的贡献模块和子包


如果
项目标题
是您的源代码,那么您的导入应该是这样的:
从src.pipeline\u tools.helpers导入myfunction
。当您从pipeline_tools将导入编写为
时,您隐式地假设您的源根是
src
,这就是为什么您将
src
定义为这样时,它会起作用。一种快速的设置方法是右键单击要成为源根目录的文件夹,然后单击
将目录标记为->源根目录。然后目录应该以蓝色显示在树中。非常感谢您的解释!“当您从pipeline_tools编写导入时……您隐含地假设您的源根是
src
”这是否意味着使用
project_title
作为源,我可以简单地从helpers import func编写
?不,您需要精确选择根的路径。因此,如果它是顶部文件夹,则需要从src.pipeline\u tools.helpers import func写入
。但是,我建议您为源根选择
src
,因为考虑到树的外观,这似乎更自然。
import sys
print(sys.path)
os.environ['PYTHONPATH'].split(os.pathsep)