如何导入位于 pycharm 项目相同子目录中的 python 文件
How to import python file located in same subdirectory in a pycharm project
调试时pycharm输入错误,运行.
我的项目结构已正确设置根目录,etc./HW3/.
因此 HW3
是根目录。
我在 HW3 中有一个子文件夹 util
和一个文件 util/util.py
。我在 util
中有另一个名为 run_tests.py
的文件。
在run_tests.py
中,我有以下导入结构,
from util.util import my_functions, etc.
这会产生输入错误,from util.util import load_dataset,proportionate_sample
ImportError: No module named 'util.util'; 'util' is not a package
然而,在完全相同的项目中,在另一个名为 data
的目录(与 util
相同级别)中,我有一个文件 data/data_prep.py
,它也从 util/util.py
使用类似的导入语句...它运行没有任何问题。
很明显,我是在做作业的过程中这样做的,所以请理解:这是附属于作业范围的。
当我将文件移动到另一个目录时,问题就消失了。所以我想这个问题是 如何导入位于 pycharm 项目同一目录中的 python 文件? 因为 pycharm 会引发错误如果我只是做 import util
并提示我使用根目录中的全名。
如果您没有 __init__.py
创建一个并添加此行
from util.util import my_function
然后你可以很容易地在你的脚本中导入模块
__init__.py
告诉 python 它应该将该文件夹视为 python 包,它也可以用于 import/load 模块。
在大多数情况下 __init__.py
是空的。
引用 docs:
The __init__.py
files are required to make Python treat the
directories as containing packages; this is done to prevent
directories with a common name, such as string
, from unintentionally
hiding valid modules that occur later on the module search path. In
the simplest case, __init__.py
can just be an empty file, but it can
also execute initialization code for the package or set the __all__
variable, described later.
推荐方式:
确保将工作文件夹设置为 Sources
。
你可以在 Pycharm
->
Preferences
->
Project: XYZ
->
Project Structure
Select 您的工作文件夹并将其标记为 Sources
。然后 Pycharm 将工作文件夹识别为项目的源文件夹,您将能够使用
在该文件夹中简单地添加其他文件
import filename.py
或
from filename.py import mudule1
=================
不推荐方式:
在 Pycharm
中,您只需在要从 同一文件夹 导入的 .py
文件前添加 .
。在你的情况下它将是
from .util import my_functions
资源
关于如何实施 Package Relative Imports 的更多信息,还有一个很好的参考。我强烈建议查看此页面。
注:可能有点不相关。
我遇到了同样的问题,但是当 运行 a jupyter notebook[=20= 时,我无法在同一目录(而不是 OP 要求的子目录)中导入模块](这里的目录没有__init__.py)。奇怪的是,我设置了 python 路径和解释器位置以及所有内容。 None 的其他答案有所帮助,但更改了 python 中的目录。
import os
os.chdir(/path/to/your/directory/)
我在 Ubuntu 16.04
上使用 PyCharm 2017.3
我遇到了与 pycharm 相同的问题,但实际错误是我尝试导入的文件没有 .py 扩展名,即使我能够 运行它作为一个独立的脚本。查看资源管理器 window 并确保它具有 .py 扩展名。如果不是,请右键单击资源管理器中的文件 window,选择重构,然后将其重命名为 .py 扩展名。
右键单击要标记为源的文件夹 > 将目录标记为 > 源根目录。
在 Pycharm 中转到 "Run - Configuration" 并取消选中
'Add Content root to Pythonpath' 和
'Add source roots to Pythonpath',
然后使用
from filename import functionname
就我而言,它仅在我省略扩展名时才起作用。示例:
import filename
对我来说,问题是源目录标记正确,但我要导入的文件的命名以数字值开头。通过重命名解决。
import 01_MyModuleToImport
至
import MyModuleToImport
调试时pycharm输入错误,运行.
我的项目结构已正确设置根目录,etc./HW3/.
因此 HW3
是根目录。
我在 HW3 中有一个子文件夹 util
和一个文件 util/util.py
。我在 util
中有另一个名为 run_tests.py
的文件。
在run_tests.py
中,我有以下导入结构,
from util.util import my_functions, etc.
这会产生输入错误,from util.util import load_dataset,proportionate_sample
ImportError: No module named 'util.util'; 'util' is not a package
然而,在完全相同的项目中,在另一个名为 data
的目录(与 util
相同级别)中,我有一个文件 data/data_prep.py
,它也从 util/util.py
使用类似的导入语句...它运行没有任何问题。
很明显,我是在做作业的过程中这样做的,所以请理解:这是附属于作业范围的。
当我将文件移动到另一个目录时,问题就消失了。所以我想这个问题是 如何导入位于 pycharm 项目同一目录中的 python 文件? 因为 pycharm 会引发错误如果我只是做 import util
并提示我使用根目录中的全名。
如果您没有 __init__.py
创建一个并添加此行
from util.util import my_function
然后你可以很容易地在你的脚本中导入模块
__init__.py
告诉 python 它应该将该文件夹视为 python 包,它也可以用于 import/load 模块。
在大多数情况下 __init__.py
是空的。
引用 docs:
The
__init__.py
files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such asstring
, from unintentionally hiding valid modules that occur later on the module search path. In the simplest case,__init__.py
can just be an empty file, but it can also execute initialization code for the package or set the__all__
variable, described later.
推荐方式:
确保将工作文件夹设置为 Sources
。
你可以在 Pycharm
->
Preferences
->
Project: XYZ
->
Project Structure
Select 您的工作文件夹并将其标记为 Sources
。然后 Pycharm 将工作文件夹识别为项目的源文件夹,您将能够使用
import filename.py
或
from filename.py import mudule1
=================
不推荐方式:
在 Pycharm
中,您只需在要从 同一文件夹 导入的 .py
文件前添加 .
。在你的情况下它将是
from .util import my_functions
资源
关于如何实施 Package Relative Imports 的更多信息,还有一个很好的参考。我强烈建议查看此页面。
注:可能有点不相关。
我遇到了同样的问题,但是当 运行 a jupyter notebook[=20= 时,我无法在同一目录(而不是 OP 要求的子目录)中导入模块](这里的目录没有__init__.py)。奇怪的是,我设置了 python 路径和解释器位置以及所有内容。 None 的其他答案有所帮助,但更改了 python 中的目录。
import os
os.chdir(/path/to/your/directory/)
我在 Ubuntu 16.04
PyCharm 2017.3
我遇到了与 pycharm 相同的问题,但实际错误是我尝试导入的文件没有 .py 扩展名,即使我能够 运行它作为一个独立的脚本。查看资源管理器 window 并确保它具有 .py 扩展名。如果不是,请右键单击资源管理器中的文件 window,选择重构,然后将其重命名为 .py 扩展名。
右键单击要标记为源的文件夹 > 将目录标记为 > 源根目录。
在 Pycharm 中转到 "Run - Configuration" 并取消选中 'Add Content root to Pythonpath' 和 'Add source roots to Pythonpath', 然后使用
from filename import functionname
就我而言,它仅在我省略扩展名时才起作用。示例:
import filename
对我来说,问题是源目录标记正确,但我要导入的文件的命名以数字值开头。通过重命名解决。
import 01_MyModuleToImport
至
import MyModuleToImport