Pracuję nad małym projektem django, który zostanie wdrożony później w kontenerze serwletów. Ale rozwój jest znacznie szybszy, jeśli pracuję z cPython zamiast Jython. Tak więc chcę przetestować, czy mój kod działa na cPython lub Jython w moim pliku settiings.py, więc mogę powiedzieć, aby używał odpowiedniego sterownika db (postgresql_psycopg2 lub doj.backends.zxjdbc.postgresql). Czy istnieje prosty sposób na zrobienie tego?Czy mogę wykryć, czy mój kod działa na cPython lub Jython?
Odpowiedz
jeśli używasz Jython
import platform
platform.system()
powrót 'Java'
here has some discussion nadzieję, że to pomaga.
Będziesz mieć unikalny plik settings.py dla każdego innego środowiska.
Twoje ustawienia settings.py nie powinny być twoją kontrolą jakości lub testem ustawień.
To, co robimy, to jest to.
Mamy "master" settings.py, który zawiera zainstalowane aplikacje i inne elementy, które niewiele się zmieniają.
Mamy pliki specyficzne dla środowiska o nazwach takich jak settings_dev_win32.py
i settings_qa_linux2.py
i „settings_co_linux2.py` itp
Każde z tych ustawień środowiska specyficzne importuje ustawienia«master», a następnie przesłania rzeczy jak Sterownik DB. Ponieważ każdy plik ustawień jest unikalny dla środowiska, nie ma instrukcji if i nie wykrywa środowiska, w którym działamy.
Produkcja (w Apache, przy użyciu mod_wsgi i mysql) używa pliku settings_prod_linux2.py
i żadnego innego.
Rozwój (w Windowsie przy użyciu sqlite) używa pliku settings_dev_win32.py
.
Jak sunqiang wskazał
import platform
platform.system()
prace dla Jython 2.5, ale to nie działa na Jython 2.2 (poprzedniej wersji Jython). Podjęto również dyskusję na temat zwracania więcej szczegółów dotyczących systemu operacyjnego dla takich wywołań w Jython 3.x. Nic nie zostało postanowił tam, ale żeby być bezpiecznie do tyłu i do przodu kompatybilny, proponuję przy użyciu:
import sys
sys.platform.startswith('java')
Który powróci prawda dla Jython i fałszywe wszędzie indziej (w rzeczywistości w Jython 2.2 lub starszy zwraca 1 dla Jython i 0 wszędzie indziej, ale to nadal będzie działało dobrze w przypadku stwierdzeń i innych kontroli). To połączenie działa w języku Jython przynajmniej w wersji 2.1 i będzie działać w przewidywalnej przyszłości.
w Pythonie wersji 2.6 lub wyżej (nota Jython 2.6 nie został jeszcze wydany) Inną opcją jest:
import platform
platform.python_implementation
Które zwraca „CPython” dla realizacji C Pythona, „IronPython” dla IronPython i będzie zwróć "Jython" dla Jython. Oczywiście ta nie jest zgodna z poprzednimi wersjami poniżej 2.6, ale będzie kompatybilna z następnymi.
Najbardziej wyraźna sposobem jest:
platforma importu
platform.python_implementation()
'CPython'
Domyślnie przez większość czasu tłumacz bazowy to tylko CPython, który jest prawdopodobnie najbardziej efektywny :)
- 1. Jak wykryć, czy mój kod działa "na" serwerze Sidekiq lub Puma?
- 2. Jak wykryć, czy mój kod działa w konsoli w Rails 3?
- 3. Czy mój kod jest bezpieczny?
- 4. Czy mogę zaimportować mój kod projektu do SWPL REPL?
- 5. Co PyPy ma do zaoferowania ponad CPython, Jython i IronPython?
- 6. Sprawdź, czy kod działa na GPU lub procesorze
- 7. Czy Selen jest wolny, czy mój kod jest nieprawidłowy?
- 8. Jak mogę powiedzieć, że mój kod działa w trybie Mono?
- 9. Jak mogę sprawdzić, czy mój skrypt Perla działa pod Windows?
- 10. C#: Jak wykryć, czy działa czytnik ekranu?
- 11. Jak sprawdzić, czy zasób nltk jest już zainstalowany na komputerze, na którym działa mój kod?
- 12. Czy mój kod zapobiega przechodzeniu katalogu?
- 13. Czy mogę upublicznić mój wynik Google Analytics?
- 14. W jaki sposób mój kod może stwierdzić, czy działa on na serwerze Google lub na lokalnym serwerze programistycznym?
- 15. Jak wykryć, czy skrypt działa na maszynie wirtualnej?
- 16. Jak wykryć, czy aplikacja na Androida została zatrzymana lub odinstalowana?
- 17. wykryć, czy Zapora systemu Windows blokuje mój program
- 18. Jak Spark współpracować z CPython
- 19. Czy mogę wykryć wiążące zmiany w Silverlight?
- 20. działa pep8 lub pylint na kod cythonowy
- 21. Jak mogę poprawić mój kod AS3/Air?
- 22. Na stałe włącz mój kod
- 23. Czy mój proces oczekuje na dane wejściowe?
- 24. Jak mogę zainstalować jython na Windows 7?
- 25. Sprawdzanie, czy kod działa w konstruktorze interfejsów
- 26. Czy uruchomić kod na konsoli?
- 27. Czy mogę wdrożyć mój .war na serwerze nginx
- 28. CPython to interpreter kodu bajtowego?
- 29. Czy mogę uruchomić kod MATLAB na stronie internetowej?
- 30. W jaki sposób mój kod może znaleźć, czy działa w IIS?
+1: Uwielbiam, gdy dowiedziałem się o jakimś nowym rogu pytona! –