2016-05-16 114 views
1

我試圖用Django應用程序控制一個覆盆子pi的LED。 我寫了一個python腳本來設置LED的顏色,一切都是okey。 但是,當我從我的views.py調用腳本我得到一個AttributeError:模塊沒有屬性。Django:導入模塊

Views.py

import sys, os 
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__)) 
sys.path.append(os.path.join(PROJECT_DIR, 'static/lampe/scripts')) 
import launcher, lampe 

"""Vue utilisee pour appliquer une couleur""" 
class Appliquer_couleur(View): 
    def get(self, context, **reponse_kwargs): 
    print(self.kwargs['pk']) 
    couleur_serialized = CouleurSerializer(Couleur.objects.get(pk=self.kwargs['pk'])) 
    launcher.launch(couleur_serialized.data['code']) 
    return HttpResponse('') 

在目錄 「蘭普/靜態/蘭佩/腳本」 我有三個文件: 空初始化的.py,lampe.py和launcher.py

Lampe.py

import sys 
import RPi.GPIO as GPIO 
def setCouleur(arg1): 
    .. 

Launcher.py

import sys, os 
from multiprocessing import Process 

import lampe as LED 

def launch(arg1): 
    try: 
    process = Process(target=LED.setCouleur, args=(arg1,)) 
    process.start() 
    process.join() 
    except KeyboardInterrupt: 
    pass 

if __name__== "__main__": 
    sys.exit(launch(sys.argv[1])) 

回溯

Internal Server Error: /lampe/appliquer_couleur/1/ 
Traceback (most recent call last): File "/usr/lib/python3.5/site-packages/django/core/handlers/base.py", line 149, in get_response 
response = self.process_exception_by_middleware(e, request) 
File "/usr/lib/python3.5/site-packages/django/core/handlers/base.py", line 147, in get_response 
response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/usr/lib/python3.5/site-packages/django/views/generic/base.py", line 68, in view 
return self.dispatch(request, *args, **kwargs) 
File "/usr/lib/python3.5/site-packages/django/views/generic/base.py", line 88, in dispatch 
return handler(request, *args, **kwargs) 
File "/home/pyrotecnix/Projet/aurore/lampe/views.py", line 85, in get 
launcher.launch(couleur_serialized.data['code']) 
File "/home/pyrotecnix/Projet/aurore/lampe/static/lampe/scripts/launcher.py", line 9, in launch 
process = Process(target=LED.setCouleur, args=(arg1,)) 
AttributeError: module 'lampe' has no attribute 'setCouleur' 
[16/May/2016 17:29:00] "GET /lampe/appliquer_couleur/1/ HTTP/1.1" 500 69516 
+0

可以在'launcher.py'或'views.py'中使用回溯 – Pyrotecnix

+0

編輯的文章,您可以嘗試'print(LED .__ file __)'來查看正在導入的'lampe'模塊?您可能會意外地將一個'static/lampe'文件夾或項目文件夾作爲一個包導入。 –

+0

是'target = LED.setCouleur'正確嗎?你確定它不應該是'target = LED.setCouleur()?通常,setter和getters是AFAIK的函數,但也許這是預期的。 – seanmus

回答

3

的項目 「蘭佩」 是隱藏在蘭普/靜態/蘭佩的 「lampe.py」 名稱/腳本,因爲它是被python找到並在導入'lampe.py'模塊之前導入它。請重命名您的lampe.py並重試。