don*_*lan 32 python importerror pycharm
调试和运行时,我在pycharm中输入错误.
我的项目结构是正确的,etc./HW3/.
所以这HW3
是根目录.
我在HW3中有一个子文件夹util
,和一个文件util/util.py
.我有另一个文件util
叫run_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)
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__变量,稍后描述.