閔行網(wǎng)站設(shè)計seo專家是什么意思
文章目錄
- 寫在前面
- 一、問題描述
- 二、解決方法
- 參考鏈接
寫在前面
自己的測試環(huán)境:
Ubuntu20.04
ROS-Noetic
一、問題描述
運(yùn)行 python 程序出現(xiàn)如下問題:
Traceback (most recent call last):File "<string>", line 1, in <module>File "/home/wong/ProgramFiles/anaconda3/envs/pytorch_env/lib/python3.8/site-packages/gi/__init__.py", line 40, in <module>from . import _gi
ImportError: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined symbol: ffi_type_uint32, version LIBFFI_BASE_7.0
二、解決方法
這個錯誤表明你在使用 gi
時遇到了 libgobject-2.0.so.0
庫和 libffi
庫之間的依賴問題,具體是缺少了 ffi_type_uint32
這個符號。通常這種問題是由于 libffi 庫版本不匹配或者依賴庫沒有正確鏈接導(dǎo)致的.
運(yùn)行以下命令:
ldconfig -p | grep libffi
輸出類似于下述的結(jié)果:
可以看到這里有多個版本的 libffi.so
, 這導(dǎo)致在某些情況下,Python
可能會加載錯誤的 libffi
版本。你可以通過設(shè)置 LD_PRELOAD
來強(qiáng)制加載正確的 libffi
庫。
運(yùn)行以下命令,此命令會強(qiáng)制 python 加載你系統(tǒng)中的 libffi.so.7
版本:
LD_PRELOAD=/lib/x86_64-linux-gnu/libffi.so.7 python -c "import gi; print(gi.__version__)"
如果返回類似于版本號的輸出,比如3.48.2
,說明Python
可能加載錯誤的 libffi
版本,導(dǎo)致的 undefined symbol: ffi_type_uint32
的問題。因此需要在 .bashrc
中增加下列指令:
export LD_PRELOAD=/lib/x86_64-linux-gnu/libffi.so.7
# 如果有多個 LD_PRELOAD 的變量,則把 libffi.so.7 放在前面,確保它首先加載 libffi.so.7,然后再加載其他的 libffi.
# export LD_PRELOAD=/lib/x86_64-linux-gnu/libffi.so.7:/usr/lib/x86_64-linux-gnu/libtiff.so.5
然后執(zhí)行下列指令,使配置生效:
source ~/.bashrc
然后重新執(zhí)行自己的python程序即可解決問題。
參考鏈接
[1] chat.