python - 在源文件中无法导入模块,但在 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 中运行相同的脚本给出了相同的结果。
解决方案
尝试
import samples.balloon.balloon
或者
from samples.balloon.balloon import someFunction
请注意,它balloon.py
位于一个名为balloon
.
希望这可以帮助。
推荐阅读
- c# - ASP.NET Core API - ActionResult
vs 异步任务 - c# - 简单的 C# WinForm 应用程序显示在 Visual Studio 中有 3 个线程。任务管理器显示 14-16 个线程。为什么?
- haskell - 尝试安装 gtk2hs-buildtools 时“Cabal-2.4.1.0 在配置步骤中失败”
- opencv - OpenCV Fisheye Calibration 在相同的点上给出很大的误差
- dask - 使用变量设置 Dask 工作人员
- javascript - 从输入更新数据
- python - 在比较列表时,您可以跳过在上一次迭代中完成的索引吗?
- haskell - 为什么 getEvent 的类型签名是什么?
- javascript - Angular 2:处理两个并行的 Web 服务调用
- php - 如何创建引导网格?