Estoy escribiendo una prueba de unidad que necesita acceder a un archivo de imagen que puse en el directorio "fixtures" directamente debajo de mi directorio de aplicaciones django. Quiero abrir este archivo de imagen en mi prueba utilizando una ruta relativa, lo que me obligaría a obtener la ruta absoluta de la aplicación django. ¿Hay alguna manera de obtener la ruta absoluta de la aplicación django?Obtener la ruta absoluta de la aplicación django
Respuesta
módulos de Python (incluyendo aplicaciones Django) tienen un atributo __file__
que le indica la ubicación de su archivo __init__.py
en el sistema de archivos, por lo
import appname
pth = os.path.dirname(appname.__file__)
debe hacer lo que quiera.
En circunstancias normales, os.path.absname(appname.__path__[0])
, pero es posible que las aplicaciones cambien si quieren importar archivos de una manera extraña.
(Yo siempre hago PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
en mi settings.py
, aunque -. Hace que sea fácil para los distintos ajustes que deben ser rutas absolutas)
Normalmente, esto es lo que agrego en mi archivo settings.py para poder hacer referencia al directorio raíz del proyecto.
import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
Este método obtendrá el directorio de cualquier archivo python.
Eso es inteligente, pero le da la ruta del proyecto no a la aplicación . En mi caso, funcionará bien porque, en el sistema de archivos, mi aplicación vive bajo el proyecto, de lo contrario no funcionaría. ¿Hay alguna forma en que realmente pueda obtener el camino a la aplicación? ¿O es esto lo más cercano que puedo obtener? – tamakisquare
Podría usarlo dentro de un archivo que esté en la aplicación, o anexar la ruta a la aplicación dentro de la carpeta al PROYECTO_ROOT utilizando os.path.join() – Kekoa
. Gracias :) – tamakisquare
- 1. WIN32_FIND_DATA - Obtener la ruta absoluta
- 2. django obteniendo la ruta absoluta de un FileField
- 3. ¿Cómo obtener la ruta absoluta de la ruta con variables de ruta del sistema?
- 4. Obtener ruta absoluta con boost :: filesystem :: ruta
- 5. Obtener URL absoluta de la ruta relativa (método refactorizado)
- 6. pyramid: obtener la URL absoluta de la aplicación
- 7. cómo obtener la ruta absoluta para el archivo symlink?
- 8. ¿Puedo obtener la ruta absoluta al script actual en KornShell?
- 9. Java: obtenga la ruta absoluta del servidor
- 10. archivos por lotes: Obtener ruta absoluta
- 11. ¿Cómo obtener la ruta absoluta del archivo desde la ruta base y relativa que contiene ".."?
- 12. URL absoluta de la ruta relativa
- 13. Ruta relativa a la ruta absoluta en VB.NET
- 14. UIWebView URLbase y la ruta absoluta
- 15. Ruta absoluta y ruta relativa
- 16. Cómo quitar la base de una ruta absoluta para obtener una ruta relativa?
- 17. ¿Existe un método en C# para obtener la ruta relativa dado dos entradas de ruta absoluta?
- 18. En un archivo MAKE, ¿cómo obtener la ruta relativa de una ruta absoluta a otra?
- 19. Nombre de ruta absoluta en mi plantilla para obtener recursos
- 20. Ruta relativa a la ruta absoluta en C#?
- 21. ¿Cómo obtener la ruta real de la aplicación Java en tiempo de ejecución?
- 22. Cómo convertir ruta relativa a la ruta absoluta en Unix
- 23. Ruta relativa a la ruta absoluta en Elisp
- 24. ¿Cómo obtener la ruta absoluta para una ruta relativa dada programáticamente en Linux?
- 25. Obtener el nombre de la ruta absoluta, subserie de la última barra, android java
- 26. Obtener la ruta de acceso absoluta al archivo dentro de la carpeta pública en Rails
- 27. Python: Encuentre la ruta absoluta de un módulo importado
- 28. ¿Cómo obtener la ruta de la aplicación ASP.NET? excepción
- 29. ¿Cómo obtener la ruta de la aplicación (sin app.exe)?
- 30. Obtener la ruta de la aplicación sin usar httpcontext. (asp.net)
Esto no es realmente correcto porque el nombre de aplicación .__ path__ es una lista, no una cadena. Ver http://docs.python.org/2/tutorial/modules.html#packages-in-multiple-directories –
@GeorgeLund Tienes razón, por supuesto; tonto de mi. Podrías hacer 'appname .__ path __ [0]', aunque parece que es posible cambiar eso; también puede usar 'os.path.dirname (appname .__ file __)', ya que '__file__' apunta al archivo' __init __. py'. – Dougal
Puedes cambiar tu respuesta para que coincida con tu comentario porque la respuesta es lo que la mayoría de la gente ve primero. – Igor