【问题标题】:How to Import module or a file from subfolder in Python?如何从 Python 中的子文件夹导入模块或文件?
【发布时间】:2018-06-01 22:13:59
【问题描述】:

有一个文件test.py,位于一个目录中,例如/pyproject。在/pyproject 中有一个名为api 的子目录,其中有两个名为gmail 和facebook 的子目录,并且在这两个目录中都有.py 文件,例如:

/pyproject/api/gmail/abc.py
/pyproject/api/facebook/xyz.py

从 test.py 导入 abc 和 xyz py 文件:

import api.gmail.abc

结果:

  File "./test.py", line 3, in <module>
    import api.gmail.abc
ImportError: No module named api.gmail.abc

是否有任何想法如何将 xyz/abc 从子目录导入到主 test.py 文件?

【问题讨论】:

    标签: python


    【解决方案1】:

    做了一些研发之后,已经做了 只需创建__init__.py(一个空的py文件)并将其添加到所有子目录 比如

     /pyproject/
        api/
          __init__.py
          gmail/
              __init__.py
              abc.py
    
          facebook/
             __init__.py
             xyz.py
    

    并在主py文件中添加

    from api.gmail.abc import *
    or
    import api.gmail.abc
    

    【讨论】:

      【解决方案2】:

      你需要在每个目录中有一个空的__init__.py 文件,它是一个标记,告诉python这个文件夹是一个模块。我认为它应该可以解决python2的问题。

      在 python3 中的导入略有改变,您还需要使用-m 命令行参数。

      如果您尝试运行的文件是 .../pyproject/src/scraper.py 您需要将您的工作目录设置为项目根.../pyproject/,然后运行:

      python -m src.scraper

      在此示例中,我使用了更长的路径来显示子目录由. 而非/ 分隔。在您的情况下,python -m test 应该可以正常工作。

      【讨论】:

        猜你喜欢
        • 2012-02-15
        • 2013-01-18
        • 2013-08-26
        • 2012-12-13
        • 2017-06-07
        • 2020-11-10
        • 2015-06-27
        • 2012-04-20
        相关资源
        最近更新 更多