diff --git a/paddlespeech/s2t/decoders/__init__.py b/paddlespeech/s2t/decoders/__init__.py index 8878a76f..af0af378 100644 --- a/paddlespeech/s2t/decoders/__init__.py +++ b/paddlespeech/s2t/decoders/__init__.py @@ -11,21 +11,15 @@ # 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. - from paddlespeech.s2t.utils.log import Log -logger = Log(__name__).getlog() try: from .ctcdecoder import swig_wrapper except: + logger = Log(__name__).getlog() try: - import pip - if int(pip.__version__.split('.')[0])>9: - from pip._internal import main - else: - from pip import main + from paddlespeech.s2t.utils import dynamic_pip_install package_name = 'paddlespeech_ctcdecoders' - main(['install', package_name]) + dynamic_pip_install.install(package_name) except Exception as e: logger.info("paddlespeech_ctcdecoders not installed!") - diff --git a/paddlespeech/s2t/models/ds2/__init__.py b/paddlespeech/s2t/models/ds2/__init__.py index 094fe928..efa50863 100644 --- a/paddlespeech/s2t/models/ds2/__init__.py +++ b/paddlespeech/s2t/models/ds2/__init__.py @@ -13,20 +13,17 @@ # limitations under the License. from .deepspeech2 import DeepSpeech2InferModel from .deepspeech2 import DeepSpeech2Model +from paddlespeech.s2t.utils import dynamic_pip_install try: import swig_decoders except: try: - import pip - if int(pip.__version__.split('.')[0])>9: - from pip._internal import main - else: - from pip import main package_name = 'paddlespeech_ctcdecoders' - main(['install', package_name]) + dynamic_pip_install.install(package_name) except: - raise RuntimeError("Can not install package paddlespeech_ctcdecoders on your system. \ + raise RuntimeError( + "Can not install package paddlespeech_ctcdecoders on your system. \ The DeepSpeech2 model is not supported for your system") __all__ = ['DeepSpeech2Model', 'DeepSpeech2InferModel'] diff --git a/paddlespeech/s2t/models/ds2_online/__init__.py b/paddlespeech/s2t/models/ds2_online/__init__.py index c8f2f55c..65ddd512 100644 --- a/paddlespeech/s2t/models/ds2_online/__init__.py +++ b/paddlespeech/s2t/models/ds2_online/__init__.py @@ -13,21 +13,17 @@ # limitations under the License. from .deepspeech2 import DeepSpeech2InferModelOnline from .deepspeech2 import DeepSpeech2ModelOnline +from paddlespeech.s2t.utils import dynamic_pip_install try: import swig_decoders except: try: - import pip - if int(pip.__version__.split('.')[0])>9: - from pip._internal import main - else: - from pip import main package_name = 'paddlespeech_ctcdecoders' - main(['install', package_name]) + dynamic_pip_install.install(package_name) except: - raise RuntimeError("Can not install package paddlespeech_ctcdecoders on your system. \ + raise RuntimeError( + "Can not install package paddlespeech_ctcdecoders on your system. \ The DeepSpeech2 model is not supported for your system") - __all__ = ['DeepSpeech2ModelOnline', 'DeepSpeech2InferModelOnline'] diff --git a/paddlespeech/s2t/modules/ctc.py b/paddlespeech/s2t/modules/ctc.py index 2d368dae..5452ef9b 100644 --- a/paddlespeech/s2t/modules/ctc.py +++ b/paddlespeech/s2t/modules/ctc.py @@ -30,13 +30,9 @@ try: from paddlespeech.s2t.decoders.ctcdecoder.swig_wrapper import Scorer # noqa: F401 except: try: - import pip - if int(pip.__version__.split('.')[0])>9: - from pip._internal import main - else: - from pip import main + from paddlespeech.s2t.utils import dynamic_pip_install package_name = 'paddlespeech_ctcdecoders' - main(['install', package_name]) + dynamic_pip_install.install(package_name) except Exception as e: logger.info("paddlespeech_ctcdecoders not installed!") diff --git a/paddlespeech/s2t/utils/dynamic_pip_install.py b/paddlespeech/s2t/utils/dynamic_pip_install.py new file mode 100644 index 00000000..39e9c35f --- /dev/null +++ b/paddlespeech/s2t/utils/dynamic_pip_install.py @@ -0,0 +1,22 @@ +# Copyright (c) 2021 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 pip + + +def install(package_name): + if int(pip.__version__.split('.')[0]) > 9: + from pip._internal import main + else: + from pip import main + main(['install', package_name])