GMB*_*ill 4 python installation
我正在使用redhat 5.8,它自动安装了python 2.4,但我使用的是需要python 2.6或更高版本的python包.所以,我在2.4旁边安装了python 2.7,以免踩到系统版本.
现在,我正在尝试通过pip安装包,并收到以下错误:
CompressionError: bz2 module is not available
Run Code Online (Sandbox Code Playgroud)
但是,我确实在我的机器上有模块,正如我所做的那样,服务器版本给出了:
[~]$ 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.
Run Code Online (Sandbox Code Playgroud)
和这样的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
Run Code Online (Sandbox Code Playgroud)
所以,我已经阅读了这些问题: 已经安装了这个非常好的问题,但这两个问题似乎都没有.在第一种情况下,建议是安装缺少的部分,第二个问题是删除(或停止引用)额外的python安装.
我想要做的是放入一个符号链接或一些这样的,以便python 2.7安装知道bz2在哪里,以便我可以使用pip来安装python包.
谢谢,B
编辑:更多信息
因此,经过大量研究后,似乎路径变量的建立方式在python 2.5中发生了巨大变化(可能是为什么red hat还没有更新).
因此,在python 2.7中,您可以通过在此文件夹中添加扩展名为.pth的文件来添加到PYTHONPATH变量:
/usr/local/lib/python2.7/site-packages/
Run Code Online (Sandbox Code Playgroud)
我尝试了两种方法让它正常工作.
首先,我简单地将一些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
Run Code Online (Sandbox Code Playgroud)
所以,这就是事情.
我也尝试将路径指向/ 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
Run Code Online (Sandbox Code Playgroud)
我仍然难过,但我觉得我正在接近.
我真的可以使用具有更多编程环境设置经验的人的一些输入.只是编写代码我更舒服:)
昨天刚刚在同一个平台上做了这件事并让它运转起来.这是我做的:
设置CFLAGS="-I/path/to/bz2/include"和LDFLAGS="-L/path/to/bz2/lib".确保在您的中设置了bz2库路径LD_LIBRARY_PATH.你可能需要做一个make distclean和configure && 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')):
Run Code Online (Sandbox Code Playgroud)
请注意,第二行末尾的注释掉部分是setup.py行的原始其余部分.
此外,我发现只需下载并构建最新版本的bz2,并指出上述所有内容比尝试使系统安装版本更容易.
无论如何,这绝对有效.我昨天做了:)
| 归档时间: |
|
| 查看次数: |
6011 次 |
| 最近记录: |