【问题标题】:Importing from another project in pydev从 pydev 中的另一个项目导入
【发布时间】:2014-11-13 20:33:20
【问题描述】:

我已经四处寻找了很长一段时间,但我就是找不到答案。类似的问题与第三方库的一些棘手案例有关,但我的情况似乎很简单。不过我不知道它是如何工作的。

我正在使用 Eclipse 3.5.2、Pydev 2.2.0,在 Ubuntu 11.04 机器上运行。

我的情况看起来很简单:我想写一个包作为自己的项目,然后我想在另一个项目中使用这个包编写一个应用程序。

我应该如何设置 pydev 以便我可以拥有这两个项目“核心”(包)和“应用”(使用核心包),并从“应用”中执行:

import core

?

  • 我已将核心添加到应用程序的项目参考中,但它没有做 任何东西。
  • 我已将 /core/ 添加到 Source 文件夹中(我不得不强制这样做,因为不是 显示在列表中),它不起作用(所以我删除了它)。
  • 我已将 /full/path/to/core 添加到外部库中,但仍然无法正常工作。

“不起作用”是指我总是得到一个“未解决的导入:核心”。

想法?

【问题讨论】:

    标签: pydev


    【解决方案1】:

    如果您有 2 个正确设置 PYTHONPATH 的项目(通过源文件夹),则只需添加项目引用即可。

    也许一个例子可以帮助...

    例如:

    project1
    project1/src <-- this should be set as the source folder
    project1/src/core
    project1/src/core/__init__.py
    
    project2
    project2/src <-- this should be set as the source folder
    project2/src/app
    project2/src/app/__init__.py
    

    然后编辑 project2 属性 > 项目引用并选择“project1”以便能够从 project2 访问 project1。

    【讨论】:

    • 谢谢,我现在可以使用了! 1) 我不需要在项目 2 的 pythonpath 或源文件夹中添加 project1 中的任何内容。 2) 将我的项目命名为“core”是不够的,即使它有 init.py:我需要一个合适的包“核心”。 3)另外,重启eclipse(文件/重启)是必要的。耶!
    【解决方案2】:

    我遇到同样的问题有一段时间了。
    现在我弄清楚了如何从其他项目的模块和包中导入类或函数。
    我发现自己对此很愚蠢,因为这很容易。

    结论!
    您只需在“项目引用”、文件/属性/项目引用中检查项目名称即可。
    在导入使用方面,引用其他项目与将所有文件或模块放在当前项目目录中相同。 我在 Windows 7 上使用 liclipse_1.0.0_win32.x86_64。

    让我展示一些例子。
    有两个项目 A 和 B,项目 A 有模块 a1.py 和包'M'。
    您正在处理 B 项目并在以下项目树中检查参考 A 项目。

    |-- A
    |   |-- M
    |   |   |-- __init__.py
    |   |   `-- m1.py
    |   `-- a1.py
    `-- B
        `-- b1.py
    
    # a1.py
    def say_a():
        print "I'm A"
    
    # m1.py
    def say_m():
        print "I'm M"
    

    现在您可以像下面这样访问项目 A。

    #b1.py
    import a1
    from M import m1   
    a1.say_a()
    m1.say_m()
    

    事实上,python 导入语句对我来说有点奇怪,你可以找到其他方法来做同样的事情。
    此外,如果你想从 Linux 命令行运行 b1.py,请参阅这个。

    ~/tmp/pydemo/B$ PYTHONPATH=../A python b1.py

    【讨论】:

      【解决方案3】:

      我没有通过添加项目引用来完成这项工作。但是,我通过首先删除然后将 pydev 项目性质添加到项目中,然后设置项目引用来使其工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-30
        • 2021-12-04
        • 1970-01-01
        • 2021-11-16
        • 2016-10-24
        • 1970-01-01
        相关资源
        最近更新 更多