PyDev Eclipse中“源文件夹”和“pydev包”有什么区别?

时间:2013-08-31 09:00:43

标签: python eclipse package pydev

PyDev Eclipse中“源文件夹”和“pydev包”有什么区别?

Menu options for creating new item in PyDev

3 个答案:

答案 0 :(得分:11)

“源文件夹”是包含源文件的目录。将.py文件放入此目录将使PyDev可以发现它们,以便您可以从其他Python文件中导入它们。

“PyDev Package”是一个Python包。这意味着它包含一个名为__init__.py的文件。例如,如果您创建名为foo的新PyDev包,那么您将获得文件foo/__init__.py。您可以将其他.py文件放入foo/,然后可以导入。{1}}。因此,如果您将bar.py放入foo/,那么您可以执行

import foo.bar

源文件夹无法实现这一点。

您通常将包放入源文件夹中。我不知道是否可以将源文件夹放入包中,但即使它是你也几乎不会这样做。

答案 1 :(得分:11)

是具有逻辑分组

的文件的收集器
import <package>.<file>

源文件夹使文件可以直接导入

import <file>

并且常规文件夹基本上无法访问。

我制作了一个显示差异的快速项目。我在每种类型的容器中放置了一个文件:常规文件夹源文件夹。每个文件都有两个项目: 一个名为show()的函数 和一个有一个公共成员的班级show()

enter image description here

然后我将驱动程序文件放在顶层(在项目根目录中,在3个容器旁边)。这只是为了尝试不同的导入方式。以下是该驱动程序文件的副本,其中包含用于描述如何使用不同元素的注释:

### valid imports
import package
import package.file_in_package as thefileinpackage
import file_in_source

### invalid imports
#import package.file_in_package.packageclass   #runtime ImportError
#import file_in_package                        #unresolved import

#import source                                 #unresolved import
#import source.file_in_source                  #unresolved import
#import file_in_source.sourceclass             #runtime ImportError

#import folder                                 #unresolved import
#import file_in_folder                         #unresolved import
#import folder.file_in_folder                  #unresolved import

thefileinpackage.show()
packageclasss_inst = thefileinpackage.packageclass()
packageclasss_inst.show()

file_in_source.show()
sourceclass_inst = file_in_source.sourceclass()
sourceclass_inst.show()

package.file_in_package.show()
packageclass_inst2 = package.file_in_package.packageclass()
packageclass_inst2.show()

答案 2 :(得分:2)

源文件夹是添加到PYTHONPATH的文件夹。

包是一个文件夹,其中包含__init__.py文件(位于源文件夹下方)。