2016-12-15 4 views
0

Я разрабатываю приложение django, которое будет работать на малине pi 3 на производстве.Raspberry pi, python, detect os

Я должен знать в начале приложения, если он работает на малине или в среде разработчиков. В dev я использую поддельные данные датчика вместо контактов.

До сих пор я не использовал этот метод:

from sys import platform as _platform 
test_environment = "win" in _platform or "darwin" in _platform 

Это работает хорошо как для моего ПК и Mac, но теперь я хотел бы развернуть это на Ubuntu веб-сервер в Интернете. Raspbian также является Linux-диском, поэтому мне нужно что-то еще.

Это мое рабочее решение, но мне очень больно. Любое предложение сделать его лучше?

try: 
    import RPi.GPIO as gpio 
    test_environment = False 
except: 
    test_environment = True 

ответ

1

Ваше решение, в основном хорошо - я бы улучшить его просто поймать конкретную ошибку вы действительно ищете:

try: 
    import RPi.GPIO as gpio 
    test_environment = False 
except ImportError: 
    test_environment = True 

Таким образом, если возникает другая ошибка (из памяти, плохо синхронизированный контроль-c и т. д.), вы не поверите, что находитесь в тестовой среде, когда вы этого не делаете. Вы также можете добавить дополнительные проверки, чтобы быть уверенными (например, только для import RPi.GPIO, если вы используете Linux).

+0

Мантра в python должна «спросить сначала просить прощения позже», поэтому используйте try, кроме как поймать ошибку, а не проверить, может ли произойти ошибка – scotty3785