Czy jest to możliwe tylko po zmianie nazwy pliku? Lub jest tam zmienna __module__
do pliku, aby określić, jaka jest jego nazwa?Jak zmienić nazwę modułu Python?
Odpowiedz
Tak, należy zmienić nazwę pliku. Najlepiej byłoby, gdybyś zrobił to, aby usunąć skompilowane pliki (jeśli są obecne) z twojego systemu, w przeciwnym razie moduł będzie można importować również pod starą nazwą.
Każda klasa ma właściwość __module__
, chociaż uważam, że zmiana tej opcji nie zmieni obszaru nazw klasy.
Jeśli jest to możliwe, prawdopodobnie wymagałoby to użycia setattr do wstawienia metod lub klas do pożądanego modułu, chociaż istnieje ryzyko, że twój kod stanie się bardzo mylący dla przyszłych użytkowników.
Najlepiej jest zmienić nazwę pliku.
Gdzie chcesz mieć tę zmienną __module__
, aby oryginalny skrypt wiedział, co zaimportować? Moduły są rozpoznawane według nazw plików i wyświetlane w ścieżkach zdefiniowanych w zmiennej sys.path
.
Musisz zmienić nazwę pliku, a następnie usunąć oldname.pyc
, aby upewnić się, że wszystko działa poprawnie.
Jeśli naprawdę chcesz, aby zaimportować plik „oldname.py” ze stwierdzeniem „przywóz newname”, istnieje trik, który pozwala Import moduł gdzieś ze starą nazwą, a następnie wstrzyknąć go do sys.modules
z nową nazwą. Kolejne instrukcje importowania będą również znajdować się pod nową nazwą. przykładowy kod:
# this is in file 'oldname.py'
...module code...
Zastosowanie:
# inject the 'oldname' module with a new name
import oldname
import sys
sys.modules['newname'] = oldname
Teraz możesz wszędzie Twój moduł import newname
.
Nie mogę wymyślić sytuacji, w której chciałbym to zrobić, ale jest fajnie, że możesz :) – technomalogical
Jedna sytuacja: projekt, w którym chcesz kompatybilność z pytonem 2.6 i 2.7, ale chcesz użyć nowego 2.7 unittest funkcjonalność. Ta sztuczka pozwala nam mieć kod po prostu używając 'importuj unittest 'przy jednoczesnym używaniu nowej funkcjonalności, więc nie musieliśmy modyfikować wielu zaimportowanych instrukcji za każdym razem przy zmianie wersji Pythona. – Tobi
Można zmienić nazwę używaną do modułu podczas importowania stosując jako:
import foo as bar
print bar.baz
Kiedy robisz import module_name
interpreter Pythona szuka pliku module_name
.extension
w PYTHONPATH. Tak więc nie ma takiej nazwy, bez zmiany nazwy pliku. Ale oczywiście można zrobić:
import module_name as new_module_name
lub nawet
import module_name.submodule.subsubmodule as short_name
Przydatne np. do pisania kodu DB.
import sqlite3 as sql
sql.whatever..
A następnie, aby przełączyć np. sqlite3
do pysqlite
po prostu zmienić wiersz importu
Miałem problem podobny do tego z bsddb. Byłem zmuszony zainstalować moduł bsddb3, ale setki skryptów zaimportowano bsddb. Zamiast zmieniać import we wszystkich z nich, wyodrębniłem jajko bsddb3 i utworzyłem miękkie łącze w katalogu lokacji-paczek, tak aby zarówno "bsddb", jak i "bsddb3" były takie same dla Pythona.
- 1. Python - pobierz pełną nazwę modułu pakietu
- 2. Jak zmienić nazwę katalogu?
- 3. Jak zmienić nazwę schematu?
- 4. Jak zmienić nazwę PHPSESSID?
- 5. Jak zmienić nazwę modelu
- 6. jak zmienić nazwę tabcontrola
- 7. Jak zmienić nazwę procesu maszyny wirtualnej Erlang?
- 8. Jak zmienić nazwę projektu w Android Studio
- 9. Jak zmienić nazwę urządzenia genymotion?
- 10. Jak zmienić nazwę obiektu R?
- 11. Jak zmienić nazwę schematu MySQL?
- 12. Jak zmienić nazwę JSON klucz
- 13. Netbeans: jak zmienić nazwę projektu?
- 14. Android Jak zmienić nazwę aplikacji
- 15. Highcharts: jak zmienić nazwę serii
- 16. Jak zmienić nazwę repozytorium GitHub?
- 17. Jak zmienić nazwę funkcji bash?
- 18. android, Jak zmienić nazwę pliku?
- 19. zmienić nazwę dll wyjściowy
- 20. Ruby: Dołącz nazwę modułu dynamicznego
- 21. Jak programowo zmienić zakładkę (modułu UITabViewController)?
- 22. Jak zmienić sumę kontrolną modułu w minizrzadku?
- 23. Jak zmienić miejsce instalacji modułu Powershell?
- 24. Instalowanie modułu Twitter Python
- 25. Jak zmienić nazwę węzła XML nazwa
- 26. Jak zmienić nazwę indeksu w MySQL
- 27. IResourceChangeEvent - jak zidentyfikować projekt usunąć/zmienić nazwę
- 28. Jak zmienić nazwę aktywnego schematu w XCode?
- 29. Jak zmienić nazwę zmiennej wiersza w tabeli
- 30. Jak zmienić nazwę folderu głównego Git?
Na czym polega problem z przemianowaniem pliku? Dlaczego nie zmieni się nazwa pracy? –
Właściwie to było tylko lenistwo ... Nie chciałem usunąć i ponownie dodać pliku na Launchpad. – Rodrigo