From da127d1110f53a02c69bd3d9c23509920e63b770 Mon Sep 17 00:00:00 2001 From: silingtong123 <35439432+silingtong123@users.noreply.github.com> Date: Mon, 26 Aug 2019 10:35:43 +0800 Subject: [PATCH] Optimized error reporting information (#19173) * test=develop,Optimized error reporting information * test=develop,add importscipy unittest * test=develop, rename the file and function --- python/paddle/__init__.py | 5 +++ python/paddle/check_import_scipy.py | 29 ++++++++++++++++ .../unittests/test_check_import_scipy.py | 33 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 python/paddle/check_import_scipy.py create mode 100644 python/paddle/fluid/tests/unittests/test_check_import_scipy.py diff --git a/python/paddle/__init__.py b/python/paddle/__init__.py index fe2ae67ec60..fccc4bb0995 100644 --- a/python/paddle/__init__.py +++ b/python/paddle/__init__.py @@ -11,6 +11,11 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # 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__ from paddle.version import commit as __git_commit__ diff --git a/python/paddle/check_import_scipy.py b/python/paddle/check_import_scipy.py new file mode 100644 index 00000000000..0172d568e5b --- /dev/null +++ b/python/paddle/check_import_scipy.py @@ -0,0 +1,29 @@ +# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +def check_import_scipy(OsName): + print_info = "" + if OsName == 'nt': + try: + import scipy.io as scio + except ImportError as e: + print_info = str(e) + if (len(print_info) > 0): + if 'DLL load failed' in print_info: + raise ImportError( + print_info + + "\nplease download visual C++ Redistributable for vs 2015, https://www.microsoft.com/en-us/download/details.aspx?id=48145" + ) + return diff --git a/python/paddle/fluid/tests/unittests/test_check_import_scipy.py b/python/paddle/fluid/tests/unittests/test_check_import_scipy.py new file mode 100644 index 00000000000..55c26f0a1aa --- /dev/null +++ b/python/paddle/fluid/tests/unittests/test_check_import_scipy.py @@ -0,0 +1,33 @@ +# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#import paddle +#from paddle.importScipy import funcImportScipy +import six.moves.builtins as builtins +from paddle.check_import_scipy import check_import_scipy +import unittest + + +def my_import(name, globals=None, locals=None, fromlist=(), level=0): + raise ImportError('DLL load failed,unittest: import scipy failed') + + +class importTest(unittest.TestCase): + def test_import(self): + testOsName = 'nt' + builtins.__import__ = my_import + self.assertRaises(ImportError, check_import_scipy, testOsName) + + +if __name__ == '__main__': + unittest.main() -- GitLab