2017-05-12 125 views
0

我正在通过运行Debian Linux和Python 2.7.9的Raspberry Pi平台上的Django/Python框架开发Web应用程序。Python中的线程与线程模块

我必须在Python脚本中使用多个线程来处理多个外围设备,如相机和麦克风。这些外设必须实时处理。

我想知道为什么我可以在我的Python脚本中发出“导入线程”而不是“导入线程”(不管它是Python版本2.x还是3.x)?

[email protected]:~ $ python --version 
Python 2.7.9 

[email protected]:~ $ python ./mythread.py 
Traceback (most recent call last): 
    File "./mythread.py", line 4, in <module> 
    from threading import Thread 
    File "/home/pi/threading.py", line 8, in <module> 
    del _sys.modules[__name__] 
AttributeError: 'module' object has no attribute 'Thread' 

[email protected]:~ $ python3 ./mythread.py 
Traceback (most recent call last): 
    File "./mythread.py", line 4, in <module> 
    from threading import Thread 
ImportError: bad magic number in 'threading': b'\x03\xf3\r\n' 
+0

您是否已经检查过[这个答案](http://stackoverflow.com/questions/514371/whats-the-bad-magic-number-error)?这可能是'* .pyc'文件引起的一个问题 –

+0

删除用户pi目录下的所有* .pyc文件并且它可以工作,非常感谢您帮助解决这样的小问题。 – dev03

回答

0

几个问题可能存在,其中之一,@Alberto提到的,是一个事实,即Python的可能试图使用的预编译,字节码文件.pyc文件。为了避免这种情况,您可以从相关目录中删除任何pycache文件,然后在解释器尝试运行时重新编译它们。下面的Bash代码将递归地从当前目录中递归地移除.pyc文件。

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf 
+1

运行由您给出的命令行来删除所有预编译的文件后,它的工作原理!非常感谢你。 – dev03

+0

很高兴帮助。 –