В чем разница между "исходной папкой" и "пакетом pydev" в PyDev Eclipse?
В чем разница между "исходной папкой" и "пакетом pydev" в PyDev Eclipse?
Ответ 1
"Исходная папка" - это каталог, содержащий исходные файлы. Включение .py файлов в этот каталог сделает их доступными для PyDev, так что вы можете, например, импортировать их из других файлов Python.
"Пакет PyDev" представляет собой пакет Python. Это означает, что он содержит файл с именем __init__.py
. Например, если вы создадите новый пакет PyDev с именем foo
, вы получите файл foo/__init__.py
. Вы можете поместить другие .py файлы в foo/
, которые затем можно импортировать. Итак, если вы поместите bar.py
в foo/
, то вы можете сделать
import foo.bar
Это невозможно с исходными папками.
Обычно вы размещаете пакеты в исходные папки. Я не знаю, можно ли поместить исходную папку в пакет, но даже если бы вы этого не делали.
Ответ 2
a package - это сборщик для файлов с логической группировкой
import <package>.<file>
и исходная папка делает файлы напрямую импортируемыми
import <file>
и обычная папка в основном недоступна.
Я сделал быстрый проект, который показывает различия. Я помещаю один файл в каждый тип контейнера: обычная папка, пакет и исходная папка. Каждый файл имел два элемента: функция, называемая 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()
Ответ 3
Исходная папка - это папка, добавленная в PYTHONPATH.
Пакет представляет собой папку с файлом __init__.py
(и который находится под исходной папкой).