From d8eef4e4a466c8008dbe518a2df71ffc8d0acdcc Mon Sep 17 00:00:00 2001 From: LielinJiang <50691816+LielinJiang@users.noreply.github.com> Date: Mon, 30 Nov 2020 21:51:42 +0800 Subject: [PATCH] Remove dependence of scipy (#29121) * lazy import for scipy * rm unused check --- python/paddle/__init__.py | 3 --- python/paddle/dataset/flowers.py | 5 ++++- python/paddle/utils/lazy_import.py | 6 +++++- python/paddle/vision/datasets/flowers.py | 4 +++- python/requirements.txt | 3 --- python/unittest_py/requirements.txt | 3 +++ 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/python/paddle/__init__.py b/python/paddle/__init__.py index bb59ffc5fa5..175788c9435 100755 --- a/python/paddle/__init__.py +++ b/python/paddle/__init__.py @@ -13,9 +13,6 @@ # limitations under the License. import os -from paddle.check_import_scipy import check_import_scipy - -check_import_scipy(os.name) try: from paddle.version import full_version as __version__ diff --git a/python/paddle/dataset/flowers.py b/python/paddle/dataset/flowers.py index 22e0838b12b..e16ea6e561e 100644 --- a/python/paddle/dataset/flowers.py +++ b/python/paddle/dataset/flowers.py @@ -35,7 +35,6 @@ import itertools import functools from .common import download import tarfile -import scipy.io as scio from paddle.dataset.image import * from paddle.reader import map_readers, xmap_readers from paddle import compat as cpt @@ -45,6 +44,7 @@ import numpy as np from multiprocessing import cpu_count import six from six.moves import cPickle as pickle +from paddle.utils import try_import __all__ = ['train', 'test', 'valid'] DATA_URL = 'http://paddlemodels.bj.bcebos.com/flowers/102flowers.tgz' @@ -108,8 +108,11 @@ def reader_creator(data_file, :return: data reader :rtype: callable ''' + scio = try_import('scipy.io') + labels = scio.loadmat(label_file)['labels'][0] indexes = scio.loadmat(setid_file)[dataset_name][0] + img2label = {} for i in indexes: img = "jpg/image_%05d.jpg" % i diff --git a/python/paddle/utils/lazy_import.py b/python/paddle/utils/lazy_import.py index 69a32b77a8f..ea07077b2da 100644 --- a/python/paddle/utils/lazy_import.py +++ b/python/paddle/utils/lazy_import.py @@ -19,6 +19,10 @@ import importlib def try_import(module_name): """Try importing a module, with an informative error message on failure.""" install_name = module_name + + if module_name.find('.') > -1: + install_name = module_name.split('.')[0] + if module_name == 'cv2': install_name = 'opencv-python' @@ -28,7 +32,7 @@ def try_import(module_name): except ImportError: err_msg = ( "Failed importing {}. This likely means that some paddle modules " - "requires additional dependencies that have to be " + "require additional dependencies that have to be " "manually installed (usually with `pip install {}`). ").format( module_name, install_name) raise ImportError(err_msg) diff --git a/python/paddle/vision/datasets/flowers.py b/python/paddle/vision/datasets/flowers.py index f0695ee8ba4..8309113b846 100644 --- a/python/paddle/vision/datasets/flowers.py +++ b/python/paddle/vision/datasets/flowers.py @@ -18,11 +18,11 @@ import os import io import tarfile import numpy as np -import scipy.io as scio from PIL import Image import paddle from paddle.io import Dataset +from paddle.utils import try_import from paddle.dataset.common import _check_exists_and_download __all__ = ["Flowers"] @@ -127,6 +127,8 @@ class Flowers(Dataset): for ele in self.data_tar.getmembers(): self.name2mem[ele.name] = ele + scio = try_import('scipy.io') + self.labels = scio.loadmat(self.label_file)['labels'][0] self.indexes = scio.loadmat(self.setid_file)[self.flag][0] diff --git a/python/requirements.txt b/python/requirements.txt index b56bdd5695e..5a0f65c810f 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -4,9 +4,6 @@ numpy>=1.13 ; python_version>="3.5" and platform_system != "Windows" numpy>=1.13, <=1.19.3 ; python_version>="3.5" and platform_system == "Windows" protobuf>=3.1.0 gast==0.3.3 -scipy>=0.19.0, <=1.2.1 ; python_version<"3.5" -scipy<=1.3.1 ; python_version=="3.5" -scipy ; python_version>"3.5" rarfile Pillow six diff --git a/python/unittest_py/requirements.txt b/python/unittest_py/requirements.txt index 2b728ae26cb..5a59935887b 100644 --- a/python/unittest_py/requirements.txt +++ b/python/unittest_py/requirements.txt @@ -6,4 +6,7 @@ gym opencv-python<=4.2.0.32 visualdl ; python_version>="3.5" paddle2onnx>=0.4 +scipy>=0.19.0, <=1.2.1 ; python_version<"3.5" +scipy<=1.3.1 ; python_version=="3.5" +scipy ; python_version>"3.5" prettytable -- GitLab