17

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

在 PyDev 中创建新项目的菜单选项

4

3 回答 3

13

是具有逻辑分组的文件的收集器

import <package>.<file>

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

import <file>

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

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

在此处输入图像描述

然后我将一个驱动程序文件放在顶层(在项目根目录中,在 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()
于 2014-05-28T20:56:09.250 回答
12

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

“PyDev 包”是一个 Python 包。这意味着它包含一个名为__init__.py. 例如,如果您使用 name 创建一个新的 PyDev 包foo,那么您将获得 file foo/__init__.py。您可以将其他 .py 文件放入foo/,然后可以导入。所以,如果你bar.py放入foo/,那么你可以做

import foo.bar

这对于源文件夹是不可能的。

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

于 2013-08-31T09:13:40.553 回答
2

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

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

于 2013-09-06T12:14:23.830 回答