Manejo de Rutas de Archivos en Sistemas Operativos Diferentes
Resumen
Un problema común en el manejo de rutas es la incompatibilidad entre los sistemas de archivos de los sistemas operativos, ya sea Windows, Mac, Linux o WSL. Por ejemplo, Windows utiliza el "backslash" en sus rutas de archivos, mientras que el resto usa el "foward slash".
Solución al manejo de rutas
Esto hace que, cuando inicies un nuevo proyecto, tengas que hacerte varias preguntas, por ejemplo:
¿Habrá más personas involucradas?
¿Habrá más de un ordenador involucrado?
¿Cuál será la ubicación del proyecto, dentro del sistema de archivos de cada ordenador?
¿Cómo se vería afectado un proyecto si reestructuras su contenido, en una fase intermedia de desarrollo?
Deberías poder trabajar en tu proyecto y no tener que preocuparte por nada más que eso.
Contribución creada por: Néstor Arellano.
Manejo de Rutas de Archivos en Sistemas Operativos Diferentes
Pues no es necesario, todo se puede desde la consola y con el jupyter del navegador
Yo utilicé un entorno virtual
python3 -m venv env
Después me moví al entorno virtual
source env/bin/activate
Creé una carpeta llamada requirements.txt y dentro de ella pegué los paquetes:
fs
jupyter
jupyterlab
pathlib
pyhere
pyprojroot
Ahora solo se necesita correr el código
pip install -r requirements.txt
Gracias..!
en mi caso no aparecia ningun kernel pero luego de
verificar que tanto las extensiones de jupyter notebook, como tambien python esten instaladas
actualizar estos dos componentes ya era posible seleccionar el kernel de la clase.
Es posible que la extension de VSCode para windows no sea la misma para WSL asi que es mejor reinstalar estos componentes pero en este caso en WSL
muchas gracias por el aporte, hice exactamente lo mismo y me salió el kernel.
Gracias...!!
Si estoy trabajando en windows con que reemplazo el comando cat?
Supongo que ya encontraste la solución pero si estas usando cmd: type.
cat deberia funcionar en powershell que tambien tiene algunos comandos parecidos a los sistemas operativos unix-like.
ya que puede pasarle a más de alguna persona,
cat
puede ser reemplazado por
pycat
!type ..\data\raw\.gitkeep
me funciono asi
sip, gracias
pwd en windows se escribe "echo %cd%"
no puedo seleccionar el kernel y no puedo avanzar
Hola parce, veo que comentaste hace un mes, ve bro mira yo tampoco pude usar conda, siempre he tenido problemas con esa forma de crear ambientes virtuales, para eso mejor usao PIP3, se me facilita mucho, por ejemplo, para este curso lo que realice fue:
Primero cree un ambiente virtual dentro de la carpeta donde se genero la plantilla
python3 -m venvenv
Después me moví al entorno virtual o sea lo active
source env/bin/activate
Creé un documento de texto llamado requirements.txt el cual por dentro tenia los nombres de los paquetes:
fs
jupyter
jupyterlab
pathlib
pyhere
pyprojroot
Ahora solo se necesita correr el código
...
pipinstall -r requirements.txt
y ya despues, buscas tu ambiente virtual, en mi caso usao pycharm y para encontrar el ambiente solo busco la carpeta que se llame sitea_packs y hay estan todos los paquetes, por lo general todos tienen la misma direccion.
Esa es la forma en la que yo activo los ambiente virtuales.
espero haberme hecho entender.
este es el comentario de un compañero, realice lo que dice y si funciono:
cristiandurangof562
Hace 4 meses
2
en mi caso no aparecia ningun kernel pero luego de
verificar que tanto las extensiones de jupyter notebook, como tambien python esten instaladas
actualizar estos dos componentes ya era posible seleccionar el kernel de la clase.
Es posible que la extension de VSCode para windows no sea la misma para WSL asi que es mejor reinstalar estos componentes pero en este caso en WSL
Quiero dar una sugerencia para todos los cursos que tengan que ver con desarrollo de software y derivados, cada vez que indiquen un comando, indiquen cómo se trabaja ese comando en cada sistema operativo, pues hay comandos que no tienen la misma sintaxis de un SO a otro, por ejemplo, yo uso Windows y el comando cat no me funciona, para mi SO sería pycat, entonces deberían siempre indicar los comandos para cada SO porque veo que en la mayoróa de cursos que he hecho los comandos que dan en su mayoría creo que son para Linux.
**Espero que este blog que he creado pueda servirte. Al crearlo, me ayudó a mejorar mi comprensión del tema. Aquí te comparto algunos recursos valiosos:**
jajajajaja, precisamente tuve varios problemas al inicio, este debería ser el primer capítulo.
De acuerdo.
Para los que están en windows:
!echo %cd%!type ..\data\raw\.gitkeep
Otra sugerencia que haría para todos los cursos de desarrollo de software y derivados es que, cuando se usen programas como Visual Studio Code se indique desde el principio qué extensiones debe tener instaladas para que el funcionamiento sea igual al que vemos en los videos, pues en mi caso hay muchas cosas que no se muestran como en los videos, por ejemplo. tengo la última versión de VSC y no muestra una opción de Terminal Integrada; si uso una terminal powershell no me funcionan los comandos de Anaconda, debo abrir una terminal Git Bash para poder ejecutar esos comandos. Lo otro fue que en un video se muestra un número y una flecha en la parte superior de la terminal indicando que tan avanzado o atrasado está mi proyecto con respecto al repositorio en GitHub y en mi caso no visualizo eso.
como hace para que la terminal de VScode le diga en que rama de git esta?
No hace nada en especial, de una a otra puede variar la forma en la que se muestra pero lo hacen de alguna manera, supongo que habrán configuraciones similar a la aplicación de escritorio de terminal de windows. Si no te aparece tal vez es porque esta con powershell (vscode me lo pone por defecto y lo cambio) entonces no aparecería porque no lo tienes ni instalado ahí.
Manejo de Rutas: Problemáticas
El manejo de rutas o gestión de directorios y archivos en el desarrollo de software es una tarea común pero a veces puede presentar desafíos. Aquí hay algunas problemáticas comunes asociadas con el manejo de rutas:
Compatibilidad entre sistemas operativos:
Los diferentes sistemas operativos tienen convenciones de ruta diferentes. Por ejemplo, en Windows se utiliza "\" para separar directorios (por ejemplo, "C:\Users\Usuario\Desktop"), mientras que en sistemas basados en Unix (como Linux y macOS) se utiliza "/" (por ejemplo, "/home/usuario/Desktop"). Es importante tener en cuenta estas diferencias para garantizar la portabilidad del código entre diferentes plataformas.
Normalización de rutas:
Las rutas pueden estar en diferentes formatos y contener caracteres especiales. Normalizar las rutas implica garantizar que estén en un formato consistente y eliminar redundancias, como ".." o ".", que pueden complicar la manipulación de rutas.
Manejo de rutas relativas y absolutas:
Es crucial entender la diferencia entre rutas relativas (referidas a la ubicación actual del programa o script) y rutas absolutas (referidas a una ubicación fija en el sistema de archivos). Algunas funciones o métodos pueden interpretar las rutas de manera diferente según si son relativas o absolutas.
Manejo de errores y excepciones:
Es importante anticipar y manejar posibles errores al trabajar con rutas, como directorios o archivos que no existen, permisos insuficientes, o problemas de acceso al sistema de archivos.
Seguridad:
La manipulación incorrecta de rutas puede llevar a problemas de seguridad, como la posibilidad de inyección de rutas o acceso no autorizado a archivos sensibles. Validar y sanitizar las rutas es crucial para prevenir posibles vulnerabilidades.
Longitud de ruta:
Algunos sistemas operativos tienen limitaciones en la longitud de las rutas. Es importante tener en cuenta estas limitaciones para evitar problemas al manipular rutas largas.
Manejo de enlaces simbólicos y accesos directos:
En sistemas de archivos que admiten enlaces simbólicos o accesos directos, el manejo de rutas puede volverse más complejo. Es importante decidir si se deben seguir o no estos enlaces y cómo manejarlos adecuadamente.
Versionamiento y cambios de estructura:
En entornos de desarrollo, especialmente en proyectos colaborativos, las estructuras de directorios pueden cambiar con el tiempo. Es necesario tener un manejo adecuado de las rutas para adaptarse a estos cambios sin romper el código existente.
Para abordar estas problemáticas, es recomendable utilizar bibliotecas o funciones proporcionadas por el lenguaje de programación que estás utilizando, ya que suelen abordar estas complejidades de manera más segura y eficiente. Además, documentar y probar cuidadosamente el manejo de rutas es esencial para evitar problemas potenciales.
Si estás leyendo esto y no te funciona cuando seleccionas el Kernel, debe ser que la versión de Python ingresada ya no es compatible. Por lo tanto te sugiero que mires el siguiente cuadro:
Por cierto, por qué se crearon las carpetas .ipynb_checkpoints? A mi no me paso (uso wsl y vscode)
Qué alternativa distinta tengo en WSL para trabajar con un proyecto de una plantilla de cookiecutter, que no sea:
conda env create --file environment.yml
Porque la creación del ambiente virtual demora demasíado, falla y bloquea mi PC
se solucionaria con docker. no?
Buen día
Tengo un problema con la terminal de python. No reconoce comandos que comienzan con "conda" por ejemplo el comando "conda activate manejo de rutas_de_rutas"