diff --git a/python/paddle/__init__.py b/python/paddle/__init__.py index fe2ae67ec606b9e8bc936143d246f9a804684e03..fccc4bb09951328cc5a827bdf861f5ab714feb5f 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 0000000000000000000000000000000000000000..0172d568e5b08693847495cde040054f96257785 --- /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 0000000000000000000000000000000000000000..55c26f0a1aa545e82e64f726967138b2fc3e9db4 --- /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()