对于我的项目,我使用面向对象的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
无效。
答案 0 :(得分:0)
您需要通过在classes目录中添加__init__.py
将这些类作为单个模块导入。但是,不要将其留空,而是需要导入类:
from . import class1_file, class2_file
然后你需要带有类的目录才能将它们导入另一台计算机。
答案 1 :(得分:0)
我使用sys.path.append
,os.chdir
,os.path.dirname
和os.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
部分适应您的文件组织。
感谢您的帮助。