[英]What is the difference between a “source folder” and a “pydev package” in PyDev Eclipse?
“源文件夾”是包含源文件的目錄。 將.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.