Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将bz2分配给python的altinstall?_Python_Installation - Fatal编程技术网

如何将bz2分配给python的altinstall?

如何将bz2分配给python的altinstall?,python,installation,Python,Installation,我使用的是自动安装的Python2.4附带的Redhat5.8,但我使用的是需要Python2.6或更高版本的python包。因此,我在安装Python2.4的同时安装了Python2.7,以避免在系统版本上出现问题 现在,我正试图通过pip安装一个软件包,并出现以下错误: 压缩错误:bz2模块不可用 但是,我的机器上确实有该模块,当我这样做时,服务器版本会给出: [~]$python-c“导入bz2;打印bz2.\uu文档” python bz2模块为 bz2压缩库。它实现了一个完整的文件

我使用的是自动安装的Python2.4附带的Redhat5.8,但我使用的是需要Python2.6或更高版本的python包。因此,我在安装Python2.4的同时安装了Python2.7,以避免在系统版本上出现问题

现在,我正试图通过pip安装一个软件包,并出现以下错误:

压缩错误:bz2模块不可用 但是,我的机器上确实有该模块,当我这样做时,服务器版本会给出:

[~]$python-c“导入bz2;打印bz2.\uu文档”
python bz2模块为
bz2压缩库。它实现了一个完整的文件
接口、一次(de)压缩功能和类型
顺序(反)压缩。
2.7安装错误如下所示:

[~]$python2.7-c“导入bz2;打印bz2.\uu文档”
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为bz2的模块
因此,我阅读了以下问题: 还有这个,但这两个都不太合适。在第一种情况下,建议是安装缺少的部分,第二个问题是删除(或停止引用)额外的python安装

我想做的是将其放入一个符号链接或类似的东西中,以便python 2.7安装知道bz2在哪里,这样我就可以使用pip安装python包

谢谢, B


编辑:更多信息

因此,经过大量研究,在Python2.5中建立路径变量的方式似乎发生了巨大的变化(可能是red hat没有更新的原因)

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

/usr/local/lib/python2.7/site-packages/
我已经尝试了两种方法让它正常工作

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

[~]$python2.7-c“导入bz2;打印bz2.\uu文档”
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
导入错误:/usr/lib64/python2.4/lib-dynload/bz2.so:未定义的符号:Py_InitModule4
所以,这很重要

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

[~]$python2.7-c“导入bz2;打印bz2.\uu文档”
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为bz2的模块
我仍然被难住了,但我觉得我已经接近了


我真的需要有更多编程环境设置经验的人提供一些信息。我更喜欢编写代码:)

昨天在同一个平台上完成了这项工作,并使其正常工作。以下是我所做的:

设置
CFLAGS=“-I/path/to/bz2/include”
LDFLAGS=“-L/path/to/bz2/lib”
。确保在
LD\u library\u路径中设置了bz2库路径
。不过,您可能需要执行
makedistclean
configure&&make&&makeinstall

如果失败,请直接编辑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,并指出以上所有内容比尝试让系统安装的版本工作起来更容易


不管怎样,这绝对有效。我昨天做的:)

任何时候,当您使用系统安装的python以外的python时,我强烈建议您使用。它使用自己的python副本为您设置一个“沙盒”,并重做所有路径等,以指向新副本。然后,您可以使用pip安装您需要的任何软件包。

提供的其他答案非常有用,但这就是我如何实现这一点的

问题不在于Python没有找到这些文件(正如我所想的那样),它只是不能正确地使用它们。因此,我查看了bzip2的Makefile,找到了如下行:

CFLAGS= -Wall -Winline -O2 -g $(BIGFILES)
并将-fPIC添加到该行,如下所示:

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

哇!它编译得很好。

第一个是正确的修复程序。您的修复实际上不是任何类型的修复,因为它使用了完全不同版本的Python库?第一个答案?嗨,jknupp,非常感谢你的帮助。遗憾的是,我不知道如何设置不同的标志。我会重拍什么?Pyton还是bzip?我找到了一个教程,介绍了这个过程:设置标志取决于您使用的shell(它们是环境变量,不同的shell有不同的方法来设置它们)。例如,在bash/zsh中,它将是“export CFLAGS=”。。。“其中删除的部分是要将其设置为的值。将LD_LIBRARY_PATH设置为什么?”?我不明白yetLDFLAGS和LD_LIBRARY_路径是一样的。根据看起来很棒的
stackoverflow.com/questions/23548188/how-do-i-compile-python-3-4-with-custom-openssl
,但是我如何使用virtualenv设置不同版本的python?看起来我问得太早了,需要解释一下