如何使用python导入工作目录中的简单类?

时间:2016-09-27 16:44:16

标签: python pycharm

我阅读了各种答案(relative import),但没有人能够导入一个简单的类。我有这个结构:

__init__.py   (empty)
my_script.py
other_script.py
my_class.py

我想在两个脚本中使用 my_class.py my_script.py other_script.py )。像所有答案建议的那样,我只是使用:

from .my_class import My_class

但我总是得到

  

SystemError:父模块''未加载,无法执行相对导入

我正在使用 Python 3.5 PyCharm 2016.1.2 。我需要配置__init__.py吗?如何导入一个简单的类?

修改

所有文件都在工作目录中。我只是使用Pycharm来运行,在尝试导入类之前我没有遇到问题。

1 个答案:

答案 0 :(得分:1)

确保您当前的工作目录 包含这些文件的目录。例如,如果__init__.py的路径为spam/eggs/__init__.py,请确保您在目录spam中工作 - 或者/path/to/spam位于sys.path并且您在第三名工作。无论哪种方式,都不要尝试在目录eggs中工作。要测试代码,请说import eggs

推理如下。由于您使用的是__init__.py,因此您显然希望将此文件集合视为package。要作为包工作,目录必须满足以下两个条件:

  1. 它包含一个名为__init__.py
  2. 的文件
  3. 目录是搜索路径的一部分(或者父目录是您当前的工作目录);实际上,包目录必须伪装成一个文件,即可以找到与单个文件模块完全相同的方式。
  4. 如果您正在内部包目录中,那么您可能无法满足标准2.您可以从那里做一个简单的import my_class,当然,但是“相对导入”的事情你“尝试是一种只有完整工作包才能支持的功能。”