in

python – Importación de módulos desde la carpeta principal

apple touch icon@2

Publiqué una respuesta similar también a la pregunta sobre las importaciones de paquetes hermanos. puedes verlo aqui.

Resumen

  • Envuelva el código en una carpeta (p. Ej. packaged_stuff)
  • Utilice crear setup.py script donde usa setuptools.setup ().
  • Pip instala el paquete en estado editable con pip install -e <myproject_folder>
  • Importar usando from packaged_stuff.modulename import function_name

Configuración

Asumo la misma estructura de carpetas que en la pregunta.

.
└── ptdraft
    ├── __init__.py
    ├── nib.py
    └── simulations
        ├── __init__.py
        └── life
            ├── __init__.py
            └── life.py

Yo llamo al . la carpeta raíz, y en mi caso se encuentra en C:tmptest_imports.

Pasos

  1. Agrega un setup.py a la carpeta raíz: el contenido del setup.py puede ser simple

    desde setuptools import setup, find_packages

    configuración (nombre = «miproyecto», versión = ‘1.0’, paquetes = buscar_paquetes ())

Básicamente «cualquiera» setup.py trabajaría. Este es solo un ejemplo de trabajo mínimo.

  1. Utilice un entorno virtual

Si está familiarizado con los entornos virtuales, active uno y continúe con el siguiente paso. El uso de entornos virtuales no es absolutamente requerido, pero lo harán De Verdad ayudarlo a largo plazo (cuando tiene más de 1 proyecto en curso …). Los pasos más básicos son (ejecutar en la carpeta raíz)

  • Crear entorno virtual
  • Activar env virtual
    • . venv/bin/activate (Linux) o ./venv/Scripts/activate (Ganar)
  • Desactivar env virtual

Para obtener más información sobre esto, simplemente busque en Google el «tutorial de virtualenv de python» o similar. Probablemente nunca necesite otros comandos que no sean crear, activar y desactivar.

Una vez que haya creado y activado un entorno virtual, su consola debe dar el nombre del entorno virtual entre paréntesis

PS C:tmptest_imports> python -m venv venv
PS C:tmptest_imports> .venvScriptsactivate
(venv) PS C:tmptest_imports>
  1. pip instala tu proyecto en estado editable

Instale su paquete de nivel superior myproject utilizando pip. El truco es usar el -e bandera al hacer la instalación. De esta forma se instala en un estado editable y todas las ediciones realizadas en los archivos .py se incluirán automáticamente en el paquete instalado.

En el directorio raíz, ejecute

pip install -e . (tenga en cuenta el punto, significa «directorio actual»)

También puede ver que está instalado usando pip freeze

(venv) PS C:tmptest_imports> pip install -e .
Obtaining file:///C:/tmp/test_imports
Installing collected packages: myproject
  Running setup.py develop for myproject
Successfully installed myproject
(venv) PS C:tmptest_imports> pip freeze
myproject==1.0
  1. Importar anteponiendo mainfolder a cada importación

En este ejemplo, el mainfolder sería ptdraft. Esto tiene la ventaja de que no encontrará colisiones de nombres con otros nombres de módulos (de la biblioteca estándar de Python o módulos de terceros).


nib.py

def function_from_nib():
    print('I am the return value from function_from_nib!')

life.py

from ptdraft.nib import function_from_nib

if __name__ == '__main__':
    function_from_nib()

Ejecutando life.py

(venv) PS C:tmptest_imports> python .ptdraftsimulationslifelife.py
I am the return value from function_from_nib!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Hallar el LCD de dos fracciones

F8s9yUWVwgtGdUZQCPbtXU 1200 80

La lista de trabajo de diseñador de juegos de Cyberpunk 2077 solicita experiencia multijugador