0%

macOS安装Qlib爬坑心路历程

我的操作系统是macOS Catalina 10.15.7
Python 3.8

通过源码安装Qlib,记录一下掉过的坑。

总的来说,按照官方说明文档,执行安装命令,一般不会有问题。

cython一定要更新,upgrade

pip要和python环境里面的版本一致,不确定是否一致,可以python -m pip install xxx的方式。

也可以通过pip show pip查看位置。

通过源码安装,pip install .,尽量不通过 pip install pyqlib来安装,更不能通过 python setup.py install来安装。

qlib安装在python=3.8下面,3.9目前支持不好。

创建python=3.8的虚拟环境后,想要在 jupyter lab 里面的 kernel select 中显示出来,需要在3.8的虚拟环境中执行命令:
pip install ipykernel

如果错误的添加了kernel,需要这样删除:jupyter kernelspec remove kernel_name

在python3.8的环境里面,要安装pip install ipywidgets,还有pip install tqdm

安装好了以后,运行qlib/examples/workflow_by_code.ipynb,在train model这里,有报错:

意思就是libomp这个库文件没有被加载到。

后来尝试了很多方法,按网上说的,都是brew install libomp

我的macOS版本太旧,brew都已经不支持了。要升级到macOS 12,但我的笔记本又不支持。

然后又找了各种办法通过源码来安装libomp。

又去搞了半天编译工具。

最后通过简单的两步搞定了问题。

1
2
3
4
5
6
7
8
9
$ pip uninstall lightgbm

Found existing installation: lightgbm 4.2.0
Uninstalling lightgbm-4.2.0:
Would remove:
/opt/anaconda3/envs/py38/lib/python3.8/site-packages/lightgbm-4.2.0.dist-info/*
/opt/anaconda3/envs/py38/lib/python3.8/site-packages/lightgbm/*
Proceed (Y/n)? y
Successfully uninstalled lightgbm-4.2.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$ conda install lightgbm
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

environment location: /opt/anaconda3/envs/py38

added / updated specs:
- lightgbm


The following packages will be downloaded:

package | build
---------------------------|-----------------
blas-1.0 | openblas 45 KB
libgfortran-5.0.0 |11_3_0_hecd8cb5_28 142 KB
libgfortran5-11.3.0 | h9dfd629_28 1.4 MB
libopenblas-0.3.21 | h54e7dc3_0 4.9 MB
lightgbm-4.1.0 | py38hcec6c5f_0 1.4 MB
llvm-openmp-14.0.6 | h0dcd299_0 288 KB
numpy-1.24.3 | py38h57a7bef_0 12 KB
numpy-base-1.24.3 | py38hc93c6d9_0 6.5 MB
pooch-1.7.0 | py38hecd8cb5_0 85 KB
scipy-1.10.1 | py38h9034365_1 20.9 MB
------------------------------------------------------------
Total: 35.8 MB

The following NEW packages will be INSTALLED:

blas pkgs/main/osx-64::blas-1.0-openblas
libgfortran pkgs/main/osx-64::libgfortran-5.0.0-11_3_0_hecd8cb5_28
libgfortran5 pkgs/main/osx-64::libgfortran5-11.3.0-h9dfd629_28
libopenblas pkgs/main/osx-64::libopenblas-0.3.21-h54e7dc3_0
lightgbm pkgs/main/osx-64::lightgbm-4.1.0-py38hcec6c5f_0
llvm-openmp pkgs/main/osx-64::llvm-openmp-14.0.6-h0dcd299_0
numpy pkgs/main/osx-64::numpy-1.24.3-py38h57a7bef_0
numpy-base pkgs/main/osx-64::numpy-base-1.24.3-py38hc93c6d9_0
pooch pkgs/main/osx-64::pooch-1.7.0-py38hecd8cb5_0
scipy pkgs/main/osx-64::scipy-1.10.1-py38h9034365_1


Proceed ([y]/n)? y

核心错误就出在我们之前都是通过pip来安装的,像这种有大量依赖的库,最好还是要通过conda install来安装。

最后qlib的work_flow在macOS下成功运行。