【发布时间】:2017-05-23 06:07:26
【问题描述】:
我目前的项目结构是这样的。
python/
__init__.py
project_1/
__init__.py
program_1.py
project_2/
__init__.py
program_2.py
project_3/
__init__.py
program_3.py
我想从 project_1/program_1.py 和 project_2/program_2.py 中导入一个名为 INFO 的类 project_3/program_3.py。在我的 program_1.py 和 program_2.py 中,我尝试了以下无效的导入语句。
编辑 - 我通常“cd”到 project_1 并从那里运行我的 program_1.py。
from project_3.program_3 import INFO
Traceback (most recent call last):
File "./program_1.py", line 43, in <module>
from project_3.program_3 import INFO
ImportError: No module named 'project_3'
from python.project_3.program_3 import INFO
Traceback (most recent call last):
File "./program_1.py", line 43, in <module>
from python.project_3.program_3 import INFO
ImportError: No module named 'python'
我将类 INFO 导入 program_1.py 和 program_2.py 的唯一方法是将 program_3.py 复制到 program_1 和 program_2 的文件夹中。我在 program_1 和 program_2 的语句中的导入将变为:
python/
__init__.py
project_1/
__init__.py
program_1.py
program_3.py
project_2/
__init__.py
program_2.py
program_3.py
project_3/
__init__.py
program_3.py
from program_3 import INFO
这很不方便,因为现在我必须在所有 3 个位置更新 program_3.py。假设我构建项目文件夹的方式有问题:
- 构建文件夹以便我可以从 program_1/2.py 调用 program_3.py 的正确/最佳方法是什么?
- 如果我当前的结构没有问题,如何将 INFO 类正确导入 program_1/2.py?
我已经阅读了python documentation,但它没有说明将类从一个子文件夹导入另一个子文件夹。我还查看了来自 Stack Overflow 的另一个 post,但它与我的结构不同。
更新 1 - 请务必注意,我只是使用 project_1/2 作为文件夹来组织我的项目。我最初在所有文件夹中都有 init.py,因为我不知道自己在做什么。我想在 project_1/program_1.py 中导入的唯一模块/包来自 project_3/program_3.py。示例:
python/
project_1/
program_1.py
project_2/
program_2.py
project_3/
__init__.py
program_3.py
【问题讨论】:
-
将每个python脚本中的目录更改为python根目录
os.chdir('./python'),然后从那里处理导入
标签: python python-3.x import