¿Cómo puedo importar un archivo de python a través de una ruta?
Estoy tratando de lograr que se ejecute la versión más nueva de la lista cuando se ejecute este código.
Aquí está el directorio que quiero:
ClockOS:
bootLoader.py (el archivo desde el cual estoy comenzando)
Versions:
Version 0.1.1:
main.py (ignorar porque es una versión anterior)
Version 0.1.2:
main.py (la que quiero ejecutar/importar)
He intentado cargarlo a través de os.dir
, y usando sys.path
, y agregando un archivo vacío __init__.py
.
¿Alguien sabe cómo hacer que esto funcione?
Mi código:
import os
import re
import sys
versionList = []
for filename in os.listdir('Versions'):
if filename.startswith('Version'):
versionList.append(filename)
print(f"Loaded {filename}")
def major_minor_micro(version):
major, minor, micro = re.search('(\d+).(\d+).(\d+)', version).groups()
return int(major), int(minor), int(micro)
latest = str(max(versionList, key=major_minor_micro))
print("Newest Version: ", latest)
os.path.dirname('Versions/'+str(latest))
sys.path.insert(1, latest)
print(sys.path)
import main
Por último, necesito que esto funcione tanto en Windows como en Linux, si es posible.
davy.ai
Para ejecutar la versión más reciente del archivo main.py desde el directorio, puede utilizar el siguiente código:
Este código primero obtiene una lista de todos los archivos en el directorio ‘Versions’ que comienzan con ‘Versión’. Luego, aplica una función de orden personalizada a la lista que ordena las versiones en función de sus versiones principales, menores y micros. Luego, obtiene la versión más reciente y construye la ruta del archivo main.py.
Una vez que tiene la ruta, agrega el directorio de la versión más reciente al camino del sistema usando sys.path.insert. Luego, importa el archivo main.py utilizando importlib.
Este código debería funcionar tanto en sistemas Windows como Linux.