如何导入位于pycharm项目中相同子目录中的python文件

don*_*lan 32 python importerror pycharm

调试和运行时,我在pycharm中输入错误.

我的项目结构是正确的,etc./HW3/.所以这HW3是根目录.

我在HW3中有一个子文件夹util,和一个文件util/util.py.我有另一个文件utilrun_tests.py.

run_tests.py,我有以下导入结构,

from util.util import my_functions, etc.
Run Code Online (Sandbox Code Playgroud)

这会产生输入错误, from util.util import load_dataset,proportionate_sample ImportError: No module named 'util.util'; 'util' is not a package


但是,在完全相同的项目中,在util调用的另一个目录(同一级别)中data,我有一个文件data/data_prep.py,它也util/util.py使用类似的import语句导入函数...并且它运行没有任何问题.


显然,我在做作业的过程中这样做,所以请理解:这是作业范围的辅助.


当我将文件移动到另一个目录时,问题就消失了.所以我想这个问题是如何导入位于pycharm项目中同一目录下的python文件? 因为如果我这样做import util,pycharm会引发错误,并提示我使用根目录中的全名.

ima*_*bet 54

推荐方式:

确保将工作文件夹设置为Sources.

你可以做到 Pycharm -> Preferences -> Project: XYZ -> Project Structure

选择您的工作文件夹并将其标记为Sources.然后Pycharm将工作文件夹识别为项目的Source文件夹,您将能够通过使用简单地添加该文件夹中的其他文件

import filename.py
Run Code Online (Sandbox Code Playgroud)

要么

from filename.py import mudule1
Run Code Online (Sandbox Code Playgroud)

=================

不推荐的方式:

Pycharm你可以简单地添加.在之前.py您打算从导入文件相同的文件夹.在你的情况下它将是

from .util import my_functions
Run Code Online (Sandbox Code Playgroud)


小智 19

右键单击要标记为源的文件夹 > 将目录标记为 > 源根。


dan*_*dee 13

如果您没有__init__.py创建一个并添加此行

from util.util import my_function
Run Code Online (Sandbox Code Playgroud)

那么你可以轻松地在脚本中导入模块,__init__.py告诉python它应该将该文件夹视为python包,它也可以用于导入/加载模块.

在大多数情况下,它__init__.py是空的.

引用文档

需要__init__.py文件才能使Python将目录视为包含包; 这样做是为了防止具有通用名称的目录(例如字符串)无意中隐藏稍后在模块搜索路径上发生的有效模块.在最简单的情况下,__ init__.py可以只是一个空文件,但它也可以执行包的初始化代码或设置__all__变量,稍后描述.