【问题标题】:How to import a local package in python 2?如何在 python 2 中导入本地包?
【发布时间】:2017-08-10 17:20:37
【问题描述】:

查看所附屏幕截图中的错误。

new 是包含 python 3.6 的 unittest 模块的目录,new2 是包含 python 2.7 的 unittest 模块的目录。我知道在第一种情况下出现的错误是因为缺少 StringIO 模块。但是为什么 python 2.7 尽管编写了与 python 3 中相同的命令却引发错误。这两种情况下的语法是否不同?

【问题讨论】:

    标签: python python-2.7 python-3.x python-import


    【解决方案1】:

    这有帮助吗?:

    import sys
    sys.path.append('path/to/your/file')
    import your.lib
    

    【讨论】:

      【解决方案2】:

      您需要一个__init.__py 文件。见这里:https://docs.python.org/2/tutorial/modules.html#packages

      init.py 文件是 Python 将目录视为包含包所必需的;这样做是为了防止具有通用名称(例如字符串)的目录无意中隐藏模块搜索路径中稍后出现的有效模块。在最简单的情况下,init.py 可以只是一个空文件,但它也可以执行包的初始化代码或设置 all 变量,稍后介绍。 p>

      【讨论】:

      • 但由于我只是简单地复制了unittest 包,它具有'__init__.py,默认情况下在每个模块中都有。
      • new2 是否包含目录unittestunittest 的内容?
      • 它包含unittest 文件夹。内容在该目录中。
      • 所以new2目录下没有__init__.py文件所以这不符合python包结构。尝试将unittest 的所有内容复制到new2 目录中,然后像以前一样导入。
      • @Alex Eschoo 然后导入行需要更改为import new2。或者,您可以简单地将 __init__.py 添加到文件夹 new2(使其成为一个模块),然后使用相同的导入行 (import new2.unittest)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2022-01-08
      • 1970-01-01
      • 2019-04-11
      • 2023-04-02
      相关资源
      最近更新 更多