This question already has answers here:
What's the bad magic number error?
(14个回答)
5年前关闭。
我已经写出以下代码来尝试生成随机数-
运行该程序后,我收到以下消息:
模块中的文件“ /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/random.py”,第41行
从数学导入日志中以_log表示,以exp表示_exp,以pi表示_pi,以e表示_e,以ceil表示_ceil
ImportError:“数学”中的错误魔术数字:b'\ x03 \ xf3 \ r \ n
魔术数字b'\ x03 \ xf3 \ r \ n'表示Python 2.7。我不确定在网上可以找到它,但是由于您使用的是Mac,因此您可以运行Apple预先安装的Python2.7并查看:
因此,以某种方式在
还要注意,在2.x和3.x中的标准CPython
除非您使用非CPython实现,否则在这种情况下,stdlib中可能会有一个
很可能它只是在当前目录或其
如果出现任何问题,那就是问题,您必须删除它。但是首先,您可能要确保您仍然拥有或不需要它的
但是,也有可能您已将其安装在不应位于
在3.4+版本中,如果无法成功
您将在某处找到一些名为
如果您想知道您的路径是什么,只需执行以下操作:
那应该显示一个路径列表,包括
(14个回答)
5年前关闭。
我已经写出以下代码来尝试生成随机数-
import random
def main():
a=random.randint(1,100)
b=random.randint(1,100)
print (a)
print (b)
main()
运行该程序后,我收到以下消息:
模块中的文件“ /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/random.py”,第41行
从数学导入日志中以_log表示,以exp表示_exp,以pi表示_pi,以e表示_e,以ceil表示_ceil
ImportError:“数学”中的错误魔术数字:b'\ x03 \ xf3 \ r \ n
最佳答案
ImportError: bad magic number in 'math': b'\x03\xf3\r\n
魔术数字b'\ x03 \ xf3 \ r \ n'表示Python 2.7。我不确定在网上可以找到它,但是由于您使用的是Mac,因此您可以运行Apple预先安装的Python2.7并查看:
$ /usr/bin/python2.7
>>> import imp
>>> imp.get_magic()
'\x03\xf3\r\n'
因此,以某种方式在
math.pyc
上有一个2.7 sys.path
,当然3.4无法加载它。还要注意,在2.x和3.x中的标准CPython
math
模块都是纯C扩展模块-也就是说,它是一个.so
文件,而不是.py
文件,因此不会有该模块的.pyc
。您必须已经编写或下载了一个名为math.py
的模块,并已在Python 2.7中使用它。除非您使用非CPython实现,否则在这种情况下,stdlib中可能会有一个
math.py
。如果您正在使用,例如PyPy,我怀疑您会知道您正在使用它,因此,如果您不知道我在说什么,可以追溯地跳过此段。很可能它只是在当前目录或其
__pycache__
中。要找出答案,请执行以下操作:$ find . -name 'math*.pyc'
如果出现任何问题,那就是问题,您必须删除它。但是首先,您可能要确保您仍然拥有或不需要它的
math.py
文件。 (或者,如果不确定,可以将其移到某个地方而不是删除它。)但是,也有可能您已将其安装在不应位于
sys.path
上的某个位置上,或者已将2.7安装到应将其安装在3.4 sys.path
上而不是2.7
sys上的某个位置.path,但是。在3.4+版本中,如果无法成功
import
并查看模块,找出模块在哪里的最简单方法是:>>> import importlib
>>> importlib.util.find_spec('math')
ModuleSpec(name='math', loader=<_frozen_importlib.ExtensionFileLoader object at 0x102e065c0>, origin='/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload/math.so')
您将在某处找到一些名为
math.pyc
(或math-SOMETHING.pyc
)的文件。然后,您需要弄清楚的是,该“某处”是否不应该放在路径上,或者该文件是否不应该在该位置上。这很有可能很明显,因为文件路径中将包含2.7或3.4。如果您想知道您的路径是什么,只需执行以下操作:
>>> import sys
>>> sys.path
那应该显示一个路径列表,包括
'.'
,3.4 stdlib,3.4系统和用户站点程序包,随.pth文件安装的所有egg,等等。它不应包含2.7或未版本化的任何内容。关于python - 我无法随机导入导入-python 3 ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25776782/
10-15 23:42