【问题标题】:Python import class from different project with same name来自同名不同项目的 Python 导入类
【发布时间】:2015-03-11 15:18:57
【问题描述】:

Project 1 Project 2 |-lib |-lib | |-Toolkit.py | |-Toolkit.py | |-Something.py | |-Class.py | |-... | |-... |-... |-... 来自项目 2 的 Class.py 从项目 2 导入 Toolkit.py,从项目 1 导入 Something.py。来自项目 1 的 Something.py 从项目 1 导入 Toolkit.py。

我无法更改项目 1,并希望在项目 2 中保留名称 Toolkit.py。在 Class.py 中,我尝试了两者 from Toolkit import function1, function2import lib.Toolkit as TK,但我仍然有错误: ImportError: cannot import name 'someFunction',这是来自 Something.py 的函数。我该如何解决这个问题?

【问题讨论】:

标签: python import


【解决方案1】:

确保您的项目是包。 (在文件夹中放一个__init__.py 文件)

只需重命名导入,然后使用它。

import Project1.lib.Toolkit as TK1
import Project2.lib.Toolkit as TK2

TK1.do_function()
TK2.do_function()

【讨论】:

  • 哪些文件夹?项目 1 还是项目 1/lib?
【解决方案2】:
Import Project1.lib.Toolkit as T1
Import Project2.lib.Toolkit as T2

我很确定这会奏效,但不能说我已经尝试过了

【讨论】:

  • 您假设 Project 1 和 lib 是包。很可能不是。
【解决方案3】:

这些项目的设计不正确。它们应该作为包来实现,这样它们就可以拥有同名的模块而不会发生冲突。为您的项目 2 包想一个名称,然后将其更改为

Project 2
    lib
        mypackage
            __init__.py
            Toolkit.py
            Class.py

然后你可以使用包相对导入来获取你想要的模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多