我一直在寻找一段时间,但我找不到答案。类似的问题涉及一些棘手的案件与第三方图书馆和所有,但我的情况似乎是教科书简单。然而,我无法弄清楚它是如何工作的。
我正在使用Eclipse 3.5.2,Pydev 2.2.0,在Ubuntu 11.04计算机上运行。
我的情况看起来很简单:我想将一个包编写为自己的项目,然后我想在另一个项目中使用这个包编写一个应用程序。
我应该如何设置pydev,以便我可以让这两个项目“核心”(包)和“app”(使用核心包),并从“app”中执行:
import core
通过“不起作用”,我的意思是我总是得到一个“未解决的导入:核心”。
想法?
答案 0 :(得分:10)
如果有2个项目正确设置了PYTHONPATH(通过源文件夹),它应该只是添加项目引用。
也许一个例子可以帮助......
E.g:
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属性&gt;项目引用并选择“project1”以便能够从project2访问project1。
答案 1 :(得分:1)
我曾经遇到过同样的问题 现在我想出了如何在其他项目中从模块和包中导入类或函数 我发现自己很愚蠢,因为它很容易。
结论!
您所要做的就是检查“项目参考”,文件/属性/项目参考中的项目名称。
在导入使用方面,引用其他项目与将所有文件或模块放在当前项目目录中相同。
我在Windows 7上使用liclipse_1.0.0_win32.x86_64。
我们举个例子 有两个项目A和B,项目A有模块a1.py和包'M' 您正在处理B项目并检查以下项目树中的参考项目。
|-- 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 import语句对我来说有点奇怪,你可以找到其他方法来做同样的事情。
另外,如果你想从Linux命令行运行b1.py,请看这个。
〜/ tmp / pydemo / B $ PYTHONPATH = .. / A python b1.py
答案 2 :(得分:0)
我没有通过添加项目引用来实现这一点。但是,我通过首先删除然后将pydev项目性质添加到项目中,然后设置项目引用来实现它。