无法将子进程模块导入python3

时间:2016-09-09 06:26:53

标签: python subprocess

我试图导入子进程。但是我甚至无法导入子进程。

目前,我的文件(throwaway.py)只包含一行:

import subprocess

但它返回错误:

Traceback (most recent call last):
  File "throwaway.py", line 1, in <module>
    import subprocess
ImportError: bad magic number in 'subprocess': b'\x03\xf3\r\n'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 12, in <module>
    import subprocess, tempfile, os.path, re, pwd, grp, os, time
ImportError: bad magic number in 'subprocess': b'\x03\xf3\r\n'

Original exception was:
Traceback (most recent call last):
  File "throwaway.py", line 1, in <module>
    import subprocess
ImportError: bad magic number in 'subprocess': b'\x03\xf3\r\n'

什么是幻数错误?我读到,当你不小心给.cyc扩展而不是.py时,它们就会出现?

2 个答案:

答案 0 :(得分:3)

在这种情况下会发生错误,因为出于某种原因,您的代码将 Python 2.7 subprocess.pyc导入到Python 3中.Python 2.7 .pycb'\x03\xf3\r\n'开头。也许你已经为Python 2和3创建了一个virtualenv(不起作用),或者使用了错误的PYTHONPATH

答案 1 :(得分:0)

使用pyclean并尝试再次导入。

pyclean <path>

将删除您提供的路径中的所有pyc个文件(递归),因此不会编译文件,因此不会发生冲突。