python - for - ¿Cuál es la diferencia entre una "carpeta de origen" y un "paquete pydev" en PyDev Eclipse?
Una "carpeta de origen" es un directorio que contiene archivos de origen. Poner los archivos .py en este directorio los hará visibles por PyDev, de modo que, por ejemplo, puede importarlos desde otros archivos de Python.
Un "Paquete PyDev" es un paquete Python. Esto significa que contiene un archivo llamado __init__.py
. Por ejemplo, si crea un nuevo paquete PyDev con el nombre foo
, obtendrá el archivo foo/__init__.py
. Puede colocar otros archivos .py en foo/
, que luego puede importar. Entonces, si bar.py
en foo/
, entonces puedes hacer
import foo.bar
Esto no es posible con las carpetas de origen.
Normalmente colocas paquetes en las carpetas de origen. No sé si es posible colocar una carpeta de origen en un paquete, pero incluso si lo fuera, casi nunca lo haría.
Una carpeta de origen es la carpeta que se agrega a PYTHONPATH.
Un paquete es una carpeta que tiene un archivo __init__.py
(y que se encuentra debajo de una carpeta de origen).
un paquete es un recopilador de archivos que tienen una agrupación lógica
import <package>.<file>
y una carpeta de origen hace que los archivos se puedan importar directamente
import <file>
y la carpeta normal es básicamente inaccesible.
Hice un proyecto rápido que muestra las diferencias. Pongo un archivo en cada tipo de contenedor: carpeta normal , paquete y carpeta de origen . Cada archivo tenía dos elementos: una función llamada show () y una clase con un solo miembro público show ()
Luego coloco un archivo de controlador en el nivel superior (en la raíz del proyecto, junto a los 3 contenedores). Esto fue solo para probar las diferentes formas de importar cosas. Aquí hay una copia de ese archivo de controlador con comentarios para describir cómo se utilizan los diferentes elementos:
### 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()