gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:37:04 35 4
gpt4 key购买 nike

这个问题以前曾被问过 - 但我无法用任何答案解决它。我在pycharm中打开了一个项目文件夹(注意项目文件夹不在../PycharmProject/...目录下。

我的结构是 super 基本的:

project_title (folder)
|--src (folder)
|-- app.py
|-- pipeline_tools (folder)
|-- helpers.py
|-- other modules

我尝试了所有可能的解决方案和组合,但是在 app.py 中时我尝试从 tools 中的任一模块导入函数我收到错误。

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

1) from pipeline_tools.helpers import a_certain_function (红色下划线带有“未解析的引用”)

但以下给我没有红色:

2) from .pipeline_tools.helpers import a_certain_function (无红色下划线,注意相对导入)

我是否拥有 __init__.py 的事实模块内部没有任何变化 - 我仍然收到以下两个错误:

对于 1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/home/gabriele/pycharm-2019.1.1/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
ModuleNotFoundError: No module named 'pipeline_tools'


2)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/home/gabriele/pycharm-2019.1.1/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
module = self._system_import(name, *args, **kwargs)
ModuleNotFoundError: No module named '__main__.pipeline_tools'; '__main__' is not a package

我确定我尝试过的东西:

1) 转至 settings > Project Structure检查 content root.../project_title并将其标记为“来源”——它是蓝色的。

2) 添加 __init__.pypipeline_tools文件夹和 /src文件夹,尝试了所有可能的组合。

3) 使用下面的代码检查项目文件夹的路径是路径字符串的一部分 - 它是
import sys
print(sys.path)

4) 使用以下代码将项目路径移动到 sys.path 的开头: sys.path.insert(0,'path/to/project_title')
5) 刚刚尝试打印 PYTHONPATH像这样:
os.environ['PYTHONPATH'].split(os.pathsep)

我的项目目录不在其中

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

最佳答案

出于某些糟糕的原因,我不明白设置 src目录作为我的来源 sources root而不是 project_title目录(无论如何都包含它......但我知道什么)工作。

所以解决方案是:

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

像这样导入:
from pipeline_tools.helpers import func_1, func_2
注:不要有一个 __init__.py文件在我的文件夹中,因为我相信我读到它们不再需要了。

Prior to Python 3.3, filesystem directories, and directories within zipfiles, had to contain an init.py in order to be recognised as Python package directories. Even if there is no initialisation code to run when the package is imported, an empty init.py file is still needed for the interpreter to find any modules or subpackages in that directory.

This has changed in Python 3.3: now any directory on sys.path with a name that matches the package name being looked for will be recognised as contributing modules and subpackages to that package.



来自 Nick Coghlan’s Python Notes

关于import - 无法从pycharm中的源目录导入模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253887/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com