簡體   English   中英

從源代碼構建后無法導入 scipy

[英]Can't import scipy after building from source

我需要使用一些最近添加到 Scipy master 而未包含在 1.5.4 中的功能。

我已經在我的家用 PC (Ubuntu 18) 上從源代碼構建了 scipy,它運行良好。

我現在需要在我大學的 HPC 集群(運行 Redhat Enterprise)上部署我的代碼。

我執行了以下命令從源代碼安裝 Scipy:

$ mkdir custom_modules
$ cd custom_modules
$ git clone https://github.com/scipy/scipy.git
$ mv scipy scipy_dev
$ pip install --upgrade pip
$ pip install cython
$ pip install pybind11
$ cd scipy_dev
$ python setup.py build --compiler=intelem --fcompiler=intelem
$ python setup.py install --user
$ export PYTHONPATH=$PYTHONPATH:/home/ucfarm0/custom_modules/scipy_dev

這似乎工作正常。

然后,我嘗試從我的主目錄運行一個測試腳本:($ python3 test.py):

import scipy
print(scipy.__version__)

我收到以下錯誤消息

ImportError: Error importing SciPy: you cannot import SciPy while
        being in scipy source directory; please exit the SciPy source
        tree first and relaunch your Python interpreter.

這是由 scipy __init__文件提供給我的。

我不明白為什么會出現此錯誤,因為我沒有從 scipy 源目錄調用腳本。 我想這與我指向那里的 PYTHONPATH 有關。 但如果沒有,我怎么能導入呢? 為什么這在我的家用電腦上不是問題?

永遠不要將系統 $PYTHONPATH 變量設置為 SciPy 根目錄。

這是因為當你運行 setup.py 時,它是在你的 site-packages 目錄中設置的。 您不能開箱即用(即從您下載它的任何地方)運行它,因為要安裝 fortran 個元素。

該代碼在我的家用計算機上運行,因為安裝成功並且 scipy 在站點包中,幸運的是我將 PYTHONPATH 設置錯誤,所以沒有收到錯誤消息。

我終於設法在 HPC 上從源代碼安裝 SciPy,說明如下:

Set up a Virtual Env and Install Modules

#######################
Download and Install SciPy
#######################

$ module unload compilers mpi
$ module load compilers/gnu/4.9.2
$ module load python/3.7.4
$ virtualenv inverse_smrt
$ source inverse_smrt/bin/activate
$ cd inverse_smrt
$ git clone https://github.com/scipy/scipy.git
$ pip install --upgrade pip
$ pip install numpy cython pybind11 xarray six pandas matplotlib xlrd

$ module load lapack openblas
$ echo $OPENBLASROOT
-> /shared/ucl/apps/openblas/0.3.7-serial/gnu-4.9.2

$ mv scipy scipy_dev
$ cd scipy_dev
$ cp site.cfg.example site.cfg
$ nano site.cfg

    Modify the [openblas] section to:

    [openblas]
    libraries = openblas
    library_dirs = /shared/ucl/apps/openblas/0.3.7-serial/gnu-4.9.2/lib
    include_dirs = /shared/ucl/apps/openblas/0.3.7-serial/gnu-4.9.2/include
    runtime_library_dirs = /shared/ucl/apps/openblas/0.3.7-serial/gnu-4.9.2/lib

$ pip install .
$ cd ..
$ nano test.py
    Import scipy
    print(scipy.__version__)
$ which python
$ python test.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM