繁体   English   中英

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

[英]What is the difference between a “source folder” and a “pydev package” in PyDev Eclipse?

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

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

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

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

import foo.bar

源文件夹无法做到这一点。

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

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

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()

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM