首页 > 解决方案 > 在源文件中无法导入模块,但在 ROOT 中可以导入

问题描述

我有一个 python 脚本,它引用了它的 ROOT 目录中的一个模块。该目录具有以下结构:

tensorflow_2
  Mask_RCNN
    mrcnn
      model.py
    samples
      balloon
        balloon.py

代码如下

import os  
ROO_DIR = os.path.abspath("../../")
print(ROOT_DIR)

/home/mypc/tensorflow_2/Mask_RCNN

from mrcnn.model import log
from samples.balloon import balloon

上述第一个导入可以毫无问题地运行。第二个不会运行。可以通过将 balloon.py 复制到 ROOT 目录并声明:

import balloon

但是,在我看来,这不是解决办法,只是问题的调解。我已经尝试调用:

export PYTHONPATH="$PYTHONPATH:~/mypc/tensorflow/Mask_RCNN"

将 ROOT 目录添加到我的 pythonpath 中。

log 是 model.py 中的一个函数。

有人可以向我解释为什么可以导入函数但不能导入 balloon.py 文件。

顺便说一句,我还没有写代码。由于 ROS 限制,我正在运行 python 2.7。在 python3 virtualenv 中运行相同的脚本给出了相同的结果。

标签: pythonimport

解决方案


尝试

import samples.balloon.balloon

或者

from samples.balloon.balloon import someFunction

请注意,它balloon.py位于一个名为balloon.

希望这可以帮助。


推荐阅读