你如何将bz2分配给python的altinstall?

时间:2012-12-17 13:31:18

标签: python installation

我正在使用redhat 5.8,它自动安装了python 2.4,但我使用的是需要python 2.6或更高版本的python包。所以,我在2.4旁边安装了python 2.7,以免踩到系统版本。

现在,我正在尝试通过pip安装软件包,并收到以下错误:

CompressionError: bz2 module is not available

然而,我确实在我的机器上安装了模块,正如我在服务器版本中所做的那样:

[~]$ python -c "import bz2; print bz2.__doc__"
The python bz2 module provides a comprehensive interface for
the bz2 compression library. It implements a complete file
interface, one shot (de)compression functions, and types for
sequential (de)compression.
以这种方式

和2.7安装错误:

[~]$ python2.7 -c "import bz2; print bz2.__doc__"
 Traceback (most recent call last):
  File "<string>", line 1, in <module>
 ImportError: No module named bz2

所以,我读过这些问题: Already installedvery good one,但这些似乎都没有。在第一种情况下,建议是安装缺少的部分,第二个问题是删除(或停止引用)额外的python安装。

我想要做的是放入一个符号链接或类似的内容,以便python 2.7安装知道bz2的位置,以便我可以使用pip来安装python包。

谢谢, 乙


编辑:更多信息

因此,经过大量研究后,似乎路径变量的建立方式在python 2.5中发生了巨大变化(可能是为什么red hat还没有更新)。

因此,在python 2.7中,您可以通过在此文件夹中添加扩展名为.pth的文件来添加到PYTHONPATH变量:

/usr/local/lib/python2.7/site-packages/

我尝试了两种方法让它正常工作。

首先,我简单地将一些python 2.4路径文件提供给2.7。这导致了不同类型的错误:

[~]$ python2.7 -c "import bz2; print bz2.__doc__"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: /usr/lib64/python2.4/lib-dynload/bz2.so: undefined symbol: Py_InitModule4

所以,这就是事情。

我也尝试将路径指向/ usr / lib /中的libbz2.so文件,这导致了熟悉的错误:

[~]$ python2.7 -c "import bz2; print bz2.__doc__"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named bz2

我仍然难过,但我觉得我正在接近。

我真的可以使用具有更多编程环境设置经验的人的一些输入。我只是在编写代码时感觉更舒服:)

3 个答案:

答案 0 :(得分:7)

昨天刚刚在同一平台上做了这件事,并让它运转起来。这是我做的:

设置CFLAGS="-I/path/to/bz2/include"LDFLAGS="-L/path/to/bz2/lib"。确保在LD_LIBRARY_PATH中设置了bz2库路径。不过,您可能需要make distcleanconfigure && make && make install

如果失败,请直接编辑setup.py并进行类似以下的替换:

# Gustavo Niemeyer's bz2 module.
if (self.compiler.find_library_file(['/home/someuser/packages/libbz2/lib'], 'bz2')): #lib_dirs, 'bz2')):

请注意,第二行末尾的注释掉部分是setup.py行的原始其余部分。

此外,我发现只需下载并构建最新版本的bz2,并指出上述所有内容比尝试使系统安装版本更容易工作。

无论如何,这绝对有效。我昨天做了:)

答案 1 :(得分:1)

每当你使用系统安装的python以外的其他python时,我强烈建议使用http://pypi.python.org/pypi/virtualenv。它为您设置了一个“沙盒”,它有自己的python副本,并重做所有路径等,以指向新副本。然后,您可以使用pip安装所需的任何软件包。

答案 2 :(得分:0)

提供的其他答案很有用,也很有用,但这就是我使用它的方法。

问题不是Python没有找到文件(正如我所想),它只是无法正确使用它们。所以,我进入了bzip2的Makefile,找到了这样的行:

CFLAGS= -Wall -Winline -O2 -g $(BIGFILES)

并将-fPIC添加到该行中:

CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES)

和WHALA!编译得很好。