代码之家  ›  专栏  ›  技术社区  ›  claudiadast

从同一父目录中的不同文件夹导入模块时出错

  •  1
  • claudiadast  · 技术社区  · 7 年前

    我有以下python包结构:

    rkstr8/cloud/batch.py
    rkstr8/profiling/test.py
    

    我正在尝试导入一个名为 BatchJobListStatusPoller ModuleNotFoundError: No module named 'rkstr8' 当我在中运行这个import语句时测试.py:

    from rkstr8.cloud.batch import BatchJobListStatusPoller

    rkstr8/文件夹以及cloud/和profileing/子文件夹都有一个 __init__.py

    我做错什么了?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Karl    7 年前

    问题是因为Python只从运行程序的任何地方的目录/子目录导入模块 python test.py sys.path 变量,包括标准库和从pip安装的任何库。我可以想出两种方法来解决这个问题,一种是更标准的方法,另一种是更非正统的解决方法。

    1. 第一种方法是直接在 aws-sfn-tutorial start_test.py . 它唯一的目的就是给你的朋友打电话 test.py 启动时编写脚本并向下传递任何命令行参数。
      这将允许您 测试.py 脚本,以便能够正确地找到 aws sfn教程

    2. 第二种方法是修改 搜索路径 测试.py 添加要导入的文件的路径。

      • 可以指定相对路径 ../ 相对于当前路径向上移动一个文件夹
      • 或者可以指定文件夹的绝对路径

    示例2:

    import sys
    sys.path.append('../') # Or use the absolute path here instead
    
    # After adding to sys.path import your module
    from cloud.batch import BatchJobListStatusPoller