Zbudowałem moduł, który używa kilku różnych modułów do różnych zadań. Kiedy importuję mój moduł do IPython i listę dostępnych funkcji autouzupełniania, te zewnętrzne moduły są zawarte na tej liście. Czy można je w jakiś sposób ukryć?Ukryj importowane moduły do interpretera
Odpowiedz
W Pythonie moduły można zdefiniować __all__
zmienną, która jest lista nazw, które powinny być importowane, gdy ktoś robi:
from module import *
ipython można użyć tej samej zmiennej w celu ograniczenia uzupełnienia, choć nie rób to domyślnie. Aby umożliwić to w czasie wykonywania ustaw:
get_ipython().Completer.limit_to__all__ = True
lub ustawić go na stałe, dodać do ipython_config.py
:
c.IPCompleter.limit_to__all__ = True
Dzięki za odpowiedź na tak stare pytanie (według standardów internetowych)! –
Dlaczego IPython nie robi tego domyślnie? Po prostu ciekawy - założę się, że istnieje dobry powód i jestem ciekawy. –
Głównie dlatego, że '__all__' często nie jest utrzymywany bardzo dobrze, i w przeciwieństwie do prefiksowanych _ _' prywatnych elementów (domyślnie ukrytych), nie ma jasnego sposobu na żądanie brakujących elementów bez ponownego uruchamiania ze zmienioną konfiguracją. Możesz zobaczyć łatkę [tutaj] (https://github.com/ipython/ipython/pull/1529) i dalej dyskusję [tutaj] (https://github.com/ipython/ipython/pull/1497). – minrk
- 1. CMake importowane zachowanie biblioteki
- 2. importowane, ale niezdefiniowane? Idź
- 3. Warunkowo importowane częściowe - Kompas
- 4. Jak działa importowanie. Dlaczego importowane moduły nie dziedziczą innych importowanych modułów
- 5. Dodatek do interpretera C# dla studia wizualnego
- 6. Automatyzacja konfiguracji interpretera PyDev
- 7. Ruby: moduły rozszerzające/zawierające moduły
- 8. Java importowane pakiet nie istnieje
- 9. Obfuscowanie kodu bajtowego python poprzez mutację interpretera
- 10. Zaimportuj wszystkie importowane zaćmienia jednocześnie?
- 11. Dlaczego wzorzec interpretera jest zasysany?
- 12. UTF-8 znaków w ścieżce użytkownika chroni moduł przed importowane
- 13. Zmienne importowane z modułu staje $ null, po sam moduł importowane ponownie
- 14. Jak zainstalować moduły ansible-moduły-dodatki?
- 15. Moduły TypeScript
- 16. Jak załatać bibliotekę importowane z Cocoapods
- 17. Moduły wymienialne
- 18. Jak mogę przekazać zmienną pętli Bash do interpretera Perla?
- 19. Wystawianie instancji klasy C++ do interpretera osadzonego w pythonie
- 20. Konwencja w języku Python do określania zgodnych wersji interpretera?
- 21. Jak załadować bieżący bufor do interpretera Pythona w Emacs?
- 22. wiem, czy .lib jest statyczne czy importowane
- 23. Moduły wyszukiwania do gry ramowej 2
- 24. Zalecane moduły Pythona do obsługi argumentów funkcji?
- 25. Jak zaimportować js-moduły do pliku TypeScript?
- 26. Jak zarejestrować dwa moduły do aplikacji ng?
- 27. Gdzie Nim wyszukuje moduły do zaimportowania?
- 28. setup.py: ogranicza dozwoloną wersję interpretera pythonów
- 29. ukryj Toast
- 30. Jaki jest cel API interpretera w CPython?
AFAIK nie, ale nie jestem ekspertem ipython. Brzydkim sposobem obejścia problemu jest utworzenie nowego modułu, w którym zaimportujesz * to, co chcesz * z modułu, o którym wspomniałeś, a następnie użyjesz tego nowego modułu zamiast drugiego. Jeszcze innym sposobem jest zmiana nazwy 'import's. Na przykład, jeśli użyjesz 'moduleA' jako pomocnika, wykonaj' import moduleA jako _moduleA'. Wtedy autouzupełnianie będzie problemem tylko wtedy, gdy próbujesz uzyskać dostęp do atrybutu zaczynającego się od '_'. – Bakuriu