En eclipse, existe esta práctica combinación de teclas CTRL + MAYÚSCULAS + o que incluirá automáticamente las instrucciones de importación (incluidas) que se necesitan según la clase o el módulo que se utiliza. ¿Has encontrado algún plugin para vim o emacs?Auto ¿Incluye instrucciones de importación de python en vim/emacs?
Respuesta
Ropemacsrope-auto-import
tiene, de manera que si se escribe
rmtree
y ejecutar M-x rope-auto-import
,
from shutil import rmtree
se inserta en la parte superior del archivo. Sin embargo, es posible que desee evitar esto, porque la importación de funciones de los módulos may not be a very wise idea.
Consulte this SO post para obtener información sobre la configuración de mazas de cables. El archivo README (por ejemplo, /usr/share/doc/python-ropemacs/README.txt.gz) que viene con ropemacs también tiene información útil para configurar el caché utilizado por el comando ropemacs-auto-import.
unutbu, eso es un puntero útil. Por cierto, no pueden los mazos de cuerda hacer una importación no relativa. Como en, uso shutil.rmtree y cuando hago M-x ropemacs-auto-import, ¿importa shutil? –
@Senthil: Desafortunadamente, AFAIK, 'M-x rope-auto-import' solo puede crear importaciones de la variedad" from X import Y ". – unutbu
@unutbu es un anagrama de Ubuntu. :) – qed
Así que estoy contento con esta sencilla función que ya me ahorra repetidos movimientos. Cuando llamo my-python-import-add
:
- me preguntan qué módulos para importar (puedo dar una lista separada por comas como
os, sys, from foo import bar, re
) - inserta ya sea un
import xxx
declaraciones o lafrom …
que ha escrito. - las importaciones están ordenadas.
- el punto no se movió (por supuesto).
Así, por ejemplo: M-x my-python-import-add
RET os, sys, from foo import bar, requests
me da:
import os
import sys
import requests
from foo import bar
ps: se encontró una advertencia: es necesario tener ya una declaración import
.
nos basamos en el paquete isort
pitón:
pip install isort
y en el py-isort
package (en melpa),
así que lea su ayuda a comprobar cómo personalizar la característica de ordenación. Yo mismo quiero una sola importación por la línea de lo que Setted
(setq py-isort-options '("--force_single_line_imports"))
La función:
edición: Me puso in a gitlab repo
actualización: ahora el símbolo sugiere la palabra en el punto de predeterminado
(require 's) ;; melpa
(require 'dash) ;; melpa
(require 'py-isort) ;; melpa
(defun my-insert-import (to_insert)
(newline)
(if (s-starts-with? "from" (s-trim to_insert)) (insert (s-trim to_insert))
(insert "import " to_insert))
)
(setq py-isort-options '("--force_single_line_imports"))
(defun python-import-add (to_import)
"Adds an import statement for every given module. Can give a comma-separated list of modules, like:
M-x my-python-import-add RET os, sys, from foo import bar, re RET"
(interactive "swhat to import ? ")
(beginning-of-buffer)
(save-excursion
(search-forward-regexp "\\(^from \\)?.*import [a-z]+") ;; if not found ?
(end-of-line)
;; split the arguments by spaces:
(setq to_insert (s-split "," to_import))
;; insert each elt of the list:
(-map 'my-insert-import to_insert)
;; sort the imports: (set your py-isort options. See isort -h)
(py-isort)
)
)
Lo que quizás haré ahora es tomar th e thing-at-point (como sys.argv
) y sugerirlo como predeterminado.=> hecho
Estoy seguro de que podemos tener una característica de importación automática útil y completa en emacs.
Gracias, esto funciona muy bien y es mucho más rápido que usar una cuerda. –
¡Genial! :) Por cierto, creé [un repositorio de git] (https://gitlab.com/emacs-stuff/python-import-add), por lo que puede hacer un seguimiento de los cambios o sugerir mejoras. – Ehvince
- 1. Python Auto Importación
- 2. Buscar instrucciones de importación no utilizadas en fuente Java
- 3. Python: Importación de un "archivo de importación"
- 4. Encontrar instrucciones estáticas de importación para las construcciones de Mockito
- 5. ¿La secuencia de instrucciones de importación tiene algún efecto?
- 6. PyCharm auto agregar importación con autocompletar
- 7. Evitar que Eclipse doble automáticamente las instrucciones de importación
- 8. Eliminar automáticamente declaraciones de paquetes explícitas con instrucciones de importación en Java
- 9. Mecánica de importación de Python
- 10. paquetes de importación de Python
- 11. Ámbito de "importación" de Python
- 12. Importación de módulos de python en jython
- 13. problemas de importación de paquetes en Python
- 14. Python error de importación scapy
- 15. Python: La importación de módulo
- 16. Importación condicional de módulos en Python
- 17. Importación correcta de módulos en Python
- 18. Declaraciones de importación local en Python
- 19. Problema de importación en modo Python
- 20. Generar instrucciones SQL con python
- 21. Auto incluye el archivo javascript si no está incluido
- 22. Python en el brazo, instrucciones ilegales
- 23. Python: "POSIX importación" cuestión
- 24. de Ruby vs Python auto de
- 25. Importación dinámica de módulos de Python
- 26. Error de importación de Python "Error al cargar DLL" | Python
- 27. Python "de importación xxx xxx.yyy" error
- 28. python: fuerza de importación no relativa?
- 29. rutas python y orden de importación
- 30. ¿Cómo anulo una importación de Python?
http://stackoverflow.com/questions/3825073/is-there-a-plugin-for-vim-to-auto-import-python-libraries – atomocopter
Quizás deba restringir su pregunta a emacs de vi pero no a ambos , ya que las respuestas serán muy diferentes. –
Hasta donde yo sé, para emacs no existe tal cosa. Sin embargo, si utiliza las mismas dependencias a menudo, puede usar plantillas de emacs (http://emacs-template.sourceforge.net/) para generar un archivo python "en blanco" que contenga sus dependencias importantes. – phimuemue