是否可以使用__init__.py文件来使用不同目录中的类?如何?

时间:2016-10-24 13:29:33

标签: python class python-3.x object

对于我的项目,我使用面向对象的Python类。我是Python的新手。我正在使用Python 3.5。 我在不同的子目录中使用这些类。我的文件以这样的方式组织:

dir
|-- MyClasses
|   |-- class1_file.py
|   |-- class2_file.py
|   ...
|-- MyPrograms1
|   |-- program_using_class1.py
|   |-- program_using_class2.py
|   ...
|-- MyPrograms2
|   ...
...

我正在使用sys.path.append("absolute_path_to_/MyClasses")在子目录程序中使用我的类(例如在MyPrograms1/program_using_class1.py中),只要我在计算机上工作就可以了。 但是现在,我希望能够从其他计算机上运行它。

所以我尝试使用__init__.py文件。 我阅读了有关模块的Python文档:https://docs.python.org/3/tutorial/modules.html。 我找不到答案。空白__init__.py无效。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

您需要通过在classes目录中添加__init__.py将这些类作为单个模块导入。但是,不要将其留空,而是需要导入类:

from . import class1_file, class2_file

然后你需要带有类的目录才能将它们导入另一台计算机。

答案 1 :(得分:0)

我使用sys.path.appendos.chdiros.path.dirnameos.path.abspath解决了我的问题。 我使用PYTHONPATH将模块的路径添加到sys.path.append,以便程序可以找到它。

我使用了这段代码:

import os
import sys
os.chdir(os.path.dirname(os.path.dirname(__file__)))
sys.path.append(os.path.abspath('MyClasses')
from class1_file import Class1

我要感谢Stam Kaly让我发现chdir功能。 您必须使os.chdir部分适应您的文件组织。

感谢您的帮助。