Sat*_*ish 34 python linux bzip2
我已经安装在我的主目录中.
[spatel@~ dev1]$ /home/spatel/python-2.7.3/bin/python -V
Python 2.7.3
Run Code Online (Sandbox Code Playgroud)
我试图运行一个需要python 2.7.x版本的脚本,我错过了bz2错误
[spatel@~ dev1]$ ./import_logs.py
Traceback (most recent call last):
File "./import_logs.py", line 13, in <module>
import bz2
ImportError: No module named bz2
Run Code Online (Sandbox Code Playgroud)
我试图安装bz2模块,但我有很多错误
[spatel@dev1 python-bz2-1.1]$ /home/spatel/python-2.7.3/bin/python setup.py install
...
...
...
bz2.c:1765: error: âBZ_FINISH_OKâ undeclared (first use in this function)
bz2.c:1765: warning: comparison between pointer and integer
bz2.c:1771: error: âPyMemberDefâ has no member named âavail_outâ
bz2.c:1778: error: âPyMemberDefâ has no member named ânext_outâ
bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_hi32â
bz2.c:1778: error: âPyMemberDefâ has no member named âtotal_out_lo32â
bz2.c:1778: error: invalid operands to binary +
bz2.c:1778: warning: statement with no effect
bz2.c:1779: error: âPyMemberDefâ has no member named âavail_outâ
bz2.c:1779: error: âPyMemberDefâ has no member named ânext_outâ
bz2.c:1779: error: invalid operands to binary -
bz2.c:1779: error: invalid operands to binary -
bz2.c:1779: warning: statement with no effect
bz2.c:1783: error: âPyMemberDefâ has no member named âavail_outâ
bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_hi32â
bz2.c:1784: error: âPyMemberDefâ has no member named âtotal_out_lo32â
bz2.c:1784: warning: passing argument 2 of â_PyString_Resizeâ makes integer from pointer without a cast
error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
jvi*_*tti 68
可能当你从源代码构建python时,你没有bz2头文件.
在Ubuntu/Debian上安装它们:
sudo apt-get install libbz2-dev
Run Code Online (Sandbox Code Playgroud)
Fedora的:
sudo yum install bzip2-devel
Run Code Online (Sandbox Code Playgroud)
并再次构建python.你可能会注意到python在配置/构建时会检查很多库,如果你错过了其中的一些库,你可能会在你的案例中不支持像bz2这样的库.
你应该得到prebuild二进制文件来避免这种东西.Ubuntu 12.04包含python 2.7.3,这是您的脚本需要的版本.
小智 33
导入熊猫时,python 3.8.2 发生了这种情况: import pandas as pd
导致了一条以“错误:ModuleNotFoundError:没有名为‘_bz2’的模块”结尾的长错误消息
这是通过执行以下 2 个 bash 命令解决的:
sudo apt-get install libbz2-dev
sudo cp /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so /usr/local/lib/python3.8/
Run Code Online (Sandbox Code Playgroud)
然后它工作得很好。
如果你在特定的位置安装python,只是安装libbz2-dev不起作用.
centos有一个解决方法:
Centos 6
sudo cp /usr/lib64/python2.6/lib-dynload/bz2.so /python_install_path/lib/python2.7
Run Code Online (Sandbox Code Playgroud)Centos 7
sudo cp /usr/lib64/python2.7/lib-dynload/bz2.so /python_install_path/lib/python2.7
Run Code Online (Sandbox Code Playgroud)python_install_path通常是/usr/local/lib/python2.7/,如果你有自定义的python路径,你需要替换它.
在CentOS 7上,安装bzip2-devel:
sudo yum install bzip2-devel
Run Code Online (Sandbox Code Playgroud)
然后重新编译python.
小智 6
上面的解决方案可以解决python2.7的bz2问题。但不是 python 3.x 是的,您需要 _bz2.cpython-3xm-x86_64-linux-gnu.so,但是您应该在自己的环境中构建它。
这是我的解决方案:
python3的源代码文件夹下的vim run.sh:Python-3.xx
export CFLAGS="-I/usr/include"
export LDFLAGS="-L/usr/lib64"
export LD_LIBRARY_PATH=/usr/lib64
make distclean
./configure --prefix=/home/xxx/Python3 && make && make install
Run Code Online (Sandbox Code Playgroud)
您可以将前缀设置为与之前版本相同,这样就不会卸载您安装的任何软件包。在此之前,先创建一个备份文件夹。
就我而言,我在导入 pandas 时遇到了此错误。安装 python 3.9.1 解决了这个问题。
我最初的 python 版本是 3.8.6。我正在使用 PyEnv 并运行 MacOS Big Sur。
最初:
$ python
Python 3.8.6 (default, Nov 21 2020, 02:39:42)
[Clang 12.0.0 (clang-1200.0.32.27)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
Traceback (most recent call last):
...
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
Run Code Online (Sandbox Code Playgroud)
安装了Python 3.9.1:
$ pyenv install --list
$ pyenv install 3.9.1
$ pyenv local 3.9.1
$ pyenv global 3.9.1
$ pip install pandas
Run Code Online (Sandbox Code Playgroud)
再次运行:
$ python
Python 3.9.1 (default, Jul 5 2021, 22:26:09)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>>
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为.so文件丢失。
说python3.7从以下位置下载文件:
_bz2.cpython-37m-x86_64-linux-gnu.so
对于不同版本,python请尝试查找适合您的版本的此文件。说python3.8更改37为38等并查找并下载文件。
现在:使用权限Ubuntu复制文件夹内的文件。/usr/local/lib/python3.7sudo
为此,请转到下载文件的文件夹并执行命令(根据您的python版本相应更改文件名和目标文件夹):
sudo cp _bz2.cpython-37m-x86_64-linux-gnu.so /usr/local/lib/python3.7
Run Code Online (Sandbox Code Playgroud)
最后下载python,解压zip文件,解压后配置并编译它:
./configure --enable-optimizations
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)
小智 5
我将其修复如下
\n# sudo find / -name \'*_bz2*\'搜索结果样本\xef\xbc\x9a
\n\n\n/usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so
\n
# sudo cp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /usr/local/python3.8.5/lib/python3.8/lib-dynloadsudo mv _bz2.cpython-36m-x86_64-linux-gnu.so _bz2.cpython-38-x86_64-linux-gnu.so如果你的 python 是3.7,你应该将文件名从 更改36m为37m.
| 归档时间: |
|
| 查看次数: |
57642 次 |
| 最近记录: |