2016-12-15 20 views
0

私は生産中のラズベリーパイ3で実行されるdjangoアプリを開発しています。Raspberry pi、python、detect os

ラズベリーで実行している場合、または開発環境では、アプリの開始時に知っておく必要があります。 devで私はピンの代わりに偽のセンサーデータを使用します。

今まで、私はこの方法を使用:

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

これが私のPCとMacの両方のための素晴らしい仕事をしていたが、今はオンラインUbuntuのWebサーバにこれを展開したいと思います。 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など)、あなたがいないときにテスト環境にいるとは思わないでしょう。さらに多くの小切手を追加して確認することもできます(たとえば、Linuxの場合はimport RPi.GPIOのみを確認してください)。

+0

Pythonのマントラは、 "最初に許しを頼むように依頼する"ため、エラーが発生する可能性があるかどうかをチェックするのではなく、エラーをキャッチするようにしてください – scotty3785