【问题标题】:how to import module from other directory in python? [duplicate]如何从python中的其他目录导入模块? [复制]
【发布时间】:2013-07-26 09:33:12
【问题描述】:

这是我的目录树

Game/
   a/
      1.py
      ...
   b/
      2.py

在 2.py 中,我想从 1.py 中显示导入函数。首先我把两个文件放在同一个文件夹里没有问题。但是如何从其他位置导入?

【问题讨论】:

  • @Haidro 类似,但我正在寻找简单的方法(不创建 distutils 包)。

标签: python python-2.7 python-import


【解决方案1】:

尝试使用imp:

import imp
foo = imp.load_source('filename', 'File\Directory\filename.py')

这就像正常导入一样,现在可以使用导入的文件

然后你可以像这样使用你的名字(在本例中为foo):

foo.method()

希望这就是你要找的东西!

你也可以试试这个:

import sys
sys.path.append('folder_name')

【讨论】:

    【解决方案2】:

    你有两个选择:

    将另一个文件夹添加到sys.path 并按名称导入

    import sys
    sys.path.append('../a')
    
    import mod1
    # you need to add `__init__.py` to `../a` folder
    # and rename `1.py` to `mod1.py` or anything starts with letter
    

    或者创建 distutils 包,然后你就可以像这样进行相对导入

     from ..a import mod1
    

    【讨论】:

      【解决方案3】:

      确保在要从中导入的任何目录中都有一个 __init__.py 文件,然后您有 2 个选项;

      例如您的代码现在将如下所示:

      Game/
         __init__.py
         a/
            __init__.py
            1.py
            ...
         b/
            __init__.py
            2.py
      
      1. 如果您的 Game 文件夹在您的 PYTHONPATH 中,您现在可以在 2.py 中执行 from Game.a import 1 或在 1.py 中反之亦然
      2. from ..a import 1 即 relative import

      【讨论】:

        猜你喜欢
        • 2017-08-20
        • 2020-02-21
        • 1970-01-01
        • 2015-03-28
        • 2021-09-27
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 2017-10-05
        相关资源
        最近更新 更多