2016-05-16 115 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并重试。