Python中没有math模块

0 投票
2 回答
24980 浏览
提问于 2025-04-17 18:07

我在使用SunOS2.10系统。我需要在Python(默认版本是2.4.6)中使用xlwt和xlrd这两个模块。在一个管理员用户的文件夹里,我找到了Python 2.7.1,所以如果我写上它的完整路径,我就可以用这个版本来代替2.4.6。我没有权限直接安装模块,所以我用了这个命令:

(path to ver 2.7)/python setup.py install --user

结果xlrd模块安装得很顺利。但是在安装xlwt模块时出现了错误:

“ImportError: No module named math”(导入错误:没有名为math的模块)

我查看了help('modules'),发现它列出了一个叫“math_failed”的模块,按我的理解应该是有一个叫math的模块。

我也尝试用Python 2.4来安装这个模块(xlwt),但出现了一个错误:

“option --user not recognized”(选项--user不被识别),

所以我理解这个选项在这个Python版本中不可用(不过math模块在那儿是可以正常工作的)。

我还尝试用以下命令本地安装整个Python:

./configure

make altinstall prefix=~ exec-prefix=~

但这也没成功,因为在“配置”过程中我收到了一个错误:

“checking whether the C compiler works... no”(检查C编译器是否工作... 不行)

我不知道怎么解决这个编译器的问题,或者如何本地安装math模块,因为我甚至找不到下载它的地方。

如果有人有任何想法,请告诉我,因为我真的卡住了,不知道该怎么办。另外,我得提一下,我在编程方面还是个新手,所以如果我说了什么愚蠢的话,请见谅:) 非常感谢大家。

2 个回答

0

听起来像是Python 2.7的数学模块编译得不好。可能是C语言的数学库没有正确包含进来。

在Python 2.7的命令行中,试试:

>>> import math
>>> math.__file__

然后,使用那个文件名,在命令行(在Python外面)中试试

$ ldd <filename>

(注意:我不知道在Sun OS上是否有ldd这个命令;如果没有,希望你知道类似的命令。)

确认一下libm库是否存在。例如,在我的Linux机器上,我看到

linux-vdso.so.1 =>  (0x00007fffaffff000)
libm.so.6 => /lib/libm.so.6 (0x00007f3326ccf000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f3326ab3000)
libc.so.6 => /lib/libc.so.6 (0x00007f3326750000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3327180000)

如果发现缺少这个库,试着在系统中找到它,并把你的LD_LIBRARY_PATH或者Sun OS的类似设置指向libm所在的目录,然后再试一次ldd <filename>

如果这次成功了,试着重新安装xlwt。记住,你总是需要设置好LD_LIBRARY_PATH或者类似的环境变量(比如通过一个shell源文件)。

0

作为一种替代方案,下面是如何在本地安装 xlwt,适用于 Python 2.4:

python setup.py build
python setup.py install --prefix=${HOME}/.local

请注意,.local 目录是 Python 2.6/7 中 --user 选项默认使用的目录。

这样安装了 xlwt,但你还不能运行它。接下来,你需要正确设置你的 PYTHONPATH

export PYTHONPATH=${HOME}/.local/lib/python2.4/site-packages

这里假设你使用的是 (ba)sh 类型的命令行。

因为每次在新的命令行中运行 python 时都需要这样做,所以最好在一个 shell 源文件中设置你的 PYTHONPATH

当然,如果已经设置了 PYTHONPATH(你可以用 $ echo $PYTHONPATH 来查看),那么它会是:

export PYTHONPATH=${PYTHONPATH}:${HOME}/.local/lib/python2.4/site-packages

撰写回答