如何解决pymc Python软件包安装?

问题描述 投票:0回答:1

我正在cmd Windows 10 64位上为python安装3.7,64位)>>

pip install pymc

pip3 install pymc

但是我收到此错误(全部为红色)

  Using cached https://files.pythonhosted.org/packages/0c/1c/2eb7016284e04ccf401fdcf11b817b160629cf8cf230240ceb348311ac2e/pymc-2.3.6.tar.gz
Installing collected packages: pymc
    Running setup.py install for pymc ... error
    ERROR: Command errored out with exit status 1:
     command: 'c:\users\sea\appdata\local\programs\python\python37\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Sea\\AppData\\Local\\Temp\\pip-install-scfexvur\\pymc\\setup.py'"'"'; __file__='"'"'C:\\Users\\Sea\\AppData\\Local\\Temp\\pip-install-scfexvur\\pymc\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\Sea\AppData\Local\Temp\pip-record-5phlxzbe\install-record.txt' --single-version-externally-managed --compile
         cwd: C:\Users\Sea\AppData\Local\Temp\pip-install-scfexvur\pymc\
    Complete output (882 lines):
    Could not locate executable g77
    Could not locate executable f77
    Could not locate executable ifort
    Could not locate executable ifl
    Could not locate executable f90
    Could not locate executable DF
    Could not locate executable efl
    Using built-in specs.
    COLLECT_GCC=C:\MinGW\bin\gfortran.exe
    COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
    Target: mingw32
    Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i586 --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-tune=generic --enable-libgomp --disable-libvtv --enable-nls
    Thread model: win32
    gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
    Using built-in specs.
    COLLECT_GCC=C:\MinGW\bin\gfortran.exe
    COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
    Target: mingw32
    Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i586 --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-tune=generic --enable-libgomp --disable-libvtv --enable-nls
    Thread model: win32
    gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
    c:\users\sea\appdata\local\programs\python\python37\lib\site-packages\numpy\distutils\system_info.py:1712: UserWarning:
        Lapack (http://www.netlib.org/lapack/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [lapack]) or by setting
        the LAPACK environment variable.
      if getattr(self, '_calc_info_{}'.format(lapack))():
    c:\users\sea\appdata\local\programs\python\python37\lib\site-packages\numpy\distutils\system_info.py:1712: UserWarning:
        Lapack (http://www.netlib.org/lapack/) sources not found.
        Directories to search for the sources can be specified in the
        numpy/distutils/site.cfg file (section [lapack_src]) or by setting
        the LAPACK_SRC environment variable.
      if getattr(self, '_calc_info_{}'.format(lapack))():
    c:\users\sea\appdata\local\programs\python\python37\lib\site-packages\numpy\distutils\system_info.py:444: UserWarning:
        Lapack (http://www.netlib.org/lapack/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [lapack]) or by setting
        the LAPACK environment variable.
      return cl().get_info(notfound_action)
    No optimized BLAS or Lapack libraries found, building from source. This may take a while...
    non-existing path in '': 'lapack/double/dpotrs.f'
    non-existing path in '': 'lapack/double/dpotrf.f'
    non-existing path in '': 'lapack/double/dpotf2.f'
    non-existing path in '': 'lapack/double/ilaenv.f'
    non-existing path in '': 'lapack/double/dlamch.f'
    non-existing path in '': 'lapack/double/ilaver.f'
    non-existing path in '': 'lapack/double/ieeeck.f'
    non-existing path in '': 'lapack/double/iparmq.f'
    No optimized BLAS or Lapack libraries found, building from source. This may take a while...
    non-existing path in '': 'lapack/double/dpotrs.f'
    non-existing path in '': 'lapack/double/dpotrf.f'
    non-existing path in '': 'lapack/double/dpotf2.f'
    non-existing path in '': 'lapack/double/ilaenv.f'
    non-existing path in '': 'lapack/double/dlamch.f'
    non-existing path in '': 'lapack/double/ilaver.f'
    non-existing path in '': 'lapack/double/ieeeck.f'
    non-existing path in '': 'lapack/double/iparmq.f'
    non-existing path in '': 'lapack/double/dpotrs.f'
    non-existing path in '': 'lapack/double/dpotrf.f'
    non-existing path in '': 'lapack/double/dpotf2.f'
    non-existing path in '': 'lapack/double/ilaenv.f'
    non-existing path in '': 'lapack/double/dlamch.f'
    non-existing path in '': 'lapack/double/ilaver.f'
    non-existing path in '': 'lapack/double/ieeeck.f'
    non-existing path in '': 'lapack/double/iparmq.f'
    running install
    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler options
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
    running build_src
    build_src
    building extension "pymc.flib" sources
    f2py options: []
    f2py:> build\src.win-amd64-3.7\pymc\flibmodule.c
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotrs.f'. Skipping file "lapack/double/dpotrs.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotrf.f'. Skipping file "lapack/double/dpotrf.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotf2.f'. Skipping file "lapack/double/dpotf2.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ilaenv.f'. Skipping file "lapack/double/ilaenv.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dlamch.f'. Skipping file "lapack/double/dlamch.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ilaver.f'. Skipping file "lapack/double/ilaver.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ieeeck.f'. Skipping file "lapack/double/ieeeck.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/iparmq.f'. Skipping file "lapack/double/iparmq.f".
    updatevars:gradlike: attempt to change 'dimension(nx)' to 'dimension(na)'. Ignoring.
    updatevars:gradlike: attempt to change 'dimension(nx)' to 'dimension(nb)'. Ignoring.
    updatevars:gradlike: attempt to change 'dimension (nmu)' to 'dimension(nmu)'. Ignoring.
    updatevars:gradlike: attempt to change 'dimension (na)' to 'dimension(na)'. Ignoring.
    rmbadname1: Replacing "index" with "index_bn".
    updatevars: "character curterms(20)*24" is mapped to "character curterms(20,24)"
    updatevars: "character septerms(20)*24" is mapped to "character septerms(20,24)"
    updatevars: "character tokens(maxtok)*(*)" is mapped to "character tokens(maxtok,(*))"
    rmbadname1: Replacing "index" with "index_bn".
    rmbadname1: Replacing "len" with "len_bn".
    sortvarnames: failed to compute dependencies because of cyclic dependencies between d, n, x, bin0, delta, nx
    Reading fortran codes...
        Reading file 'pymc\\flib.f' (format:fix,strict)
        Reading file 'pymc\\histogram.f' (format:fix,strict)
        Reading file 'pymc\\flib_blas.f' (format:fix,strict)
        Reading file 'pymc\\blas_wrap.f' (format:fix,strict)
        Reading file 'pymc\\math.f' (format:fix,strict)
        Reading file 'pymc\\gibbsit.f' (format:fix,strict)
    Line #1125 in pymc\gibbsit.f:"      DOUBLE PRECISION INTENT(CACHE,HIDE), DIMENSION(2*ITERACNT) :: WORK"
        updatevars: attempt to change the type of "work" ("integer") to "double precision". Ignoring.
        Reading file 'blas\\BLAS\\dscal.f' (format:fix,strict)
    Post-processing...
        Block: flib
                  ssort(x,y,kflag,[n])
                Constructing wrapper function "dscal"...
    getarrdims:warning: assumed shape array, using 0 instead of '*'
                  dscal(n,da,dx,incx)
                Constructing COMMON block support for "unif_seeds"...
                  s1,s2
        Wrote C/API module "flib" to file "build\src.win-amd64-3.7\pymc\flibmodule.c"
        Fortran 77 wrappers are saved to "build\src.win-amd64-3.7\pymc\flib-f2pywrappers.f"
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\fortranobject.c' to sources.
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc' to include_dirs.
      adding 'build\src.win-amd64-3.7\pymc\flib-f2pywrappers.f' to sources.
    building extension "pymc.LazyFunction" sources
    building extension "pymc.Container_values" sources
    building extension "pymc.gp.linalg_utils" sources
    f2py options: []
    f2py:> build\src.win-amd64-3.7\pymc\gp\linalg_utilsmodule.c
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotrs.f'. Skipping file "lapack/double/dpotrs.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotrf.f'. Skipping file "lapack/double/dpotrf.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotf2.f'. Skipping file "lapack/double/dpotf2.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ilaenv.f'. Skipping file "lapack/double/ilaenv.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dlamch.f'. Skipping file "lapack/double/dlamch.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ilaver.f'. Skipping file "lapack/double/ilaver.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ieeeck.f'. Skipping file "lapack/double/ieeeck.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/iparmq.f'. Skipping file "lapack/double/iparmq.f".
    Reading fortran codes...
        Reading file 'pymc\\gp\\linalg_utils.f' (format:fix,strict)
        Reading file 'pymc\\blas_wrap.f' (format:fix,strict)
        Reading file 'blas\\BLAS\\dscal.f' (format:fix,strict)
    Post-processing...
        Block: linalg_utils
                        Block: remove_duplicates
                        Block: check_repeats
                        Block: diag_call
                                        Block: cov_fun
    {'attrspec': ['intent(hide)']}
    In: :linalg_utils:pymc\gp\linalg_utils.f:basis_diag_call
    vars2fortran: No typespec for argument "nbas".
                        Block: basis_diag_call
                        Block: gp_array_logp
                        Block: asqs
    {'attrspec': ['intent(hide)']}
    In: :linalg_utils:pymc\blas_wrap.f:dcopy_wrap
    vars2fortran: No typespec for argument "nx".

    Post-processing (stage 2)...
    Building modules...
        Constructing call-back function "cb_cov_fun_in_diag_call__user__routines"
          def cov_fun(xe): return q
        Building module "linalg_utils"...
                Constructing wrapper function "remove_duplicates"...
                  nr,rf,rt,nu,xu,ui = remove_duplicates(x)
                Constructing wrapper function "check_repeats"...
                  f,new_indices,n_new_indices = check_repeats(x,x_sofar,f_sofar)


                  piv,info = dchdc_wrap(a)
                Constructing wrapper function "dpotrs_wrap"...
                  info = dpotrs_wrap(chol_fac,b,[uplo])
                Constructing wrapper function "dscal"...
    getarrdims:warning: assumed shape array, using 0 instead of '*'
                  dscal(n,da,dx,incx)
        Wrote C/API module "linalg_utils" to file "build\src.win-amd64-3.7\pymc\gp\linalg_utilsmodule.c"
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp\fortranobject.c' to sources.
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp' to include_dirs.
    building extension "pymc.gp.incomplete_chol" sources
    f2py options: []
    f2py:> build\src.win-amd64-3.7\pymc\gp\incomplete_cholmodule.c
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotrs.f'. Skipping file "lapack/double/dpotrs.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotrf.f'. Skipping file "lapack/double/dpotrf.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dpotf2.f'. Skipping file "lapack/double/dpotf2.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ilaenv.f'. Skipping file "lapack/double/ilaenv.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/dlamch.f'. Skipping file "lapack/double/dlamch.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ilaver.f'. Skipping file "lapack/double/ilaver.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/ieeeck.f'. Skipping file "lapack/double/ieeeck.f".
    IOError: [Errno 2] No such file or directory: 'lapack/double/iparmq.f'. Skipping file "lapack/double/iparmq.f".
    Reading fortran codes...
        Reading file 'pymc\\gp\\incomplete_chol.f' (format:fix,strict)
        Reading file 'pymc\\blas_wrap.f' (format:fix,strict)
        Reading file 'blas\\BLAS\\dscal.f' (format:fix,strict)
    Post-processing...
        Block: incomplete_chol
                        Block: ichol_continue
                                        Block: rowfun
                        Block: ichol
                                        Block: rowfun
    {'attrspec': ['intent(hide)']}
    In: :incomplete_chol:pymc\gp\incomplete_chol.f:ichol_basis
    vars2fortran: No typespec for argument "n_nug".
                        Block: ichol_basis
                        Block: ichol_full
    {'attrspec': ['intent(hide)']}
    In: :incomplete_chol:pymc\blas_wrap.f:dcopy_wrap
    vars2fortran: No typespec for argument "nx".
                        Block: dscal
    Post-processing (stage 2)...
    Building modules...
        Constructing call-back function "cb_rowfun_in_ichol_continue__user__routines"
          def rowfun(itot,x,rowvec): return
        Constructing call-back function "cb_rowfun_in_ichol__user__routines"
          def rowfun(i,x,rowvec): return
        Building module "incomplete_chol"...
                Constructing wrapper function "ichol_continue"...
                  m,piv = ichol_continue(sig,diag,piv,reltol,x,rowfun,mold,[overwrite_x,rowfun_extra_args])

                  piv,info = dchdc_wrap(a)
                Constructing wrapper function "dpotrs_wrap"...
                  info = dpotrs_wrap(chol_fac,b,[uplo])
                Constructing wrapper function "dscal"...
    getarrdims:warning: assumed shape array, using 0 instead of '*'
                  dscal(n,da,dx,incx)
        Wrote C/API module "incomplete_chol" to file "build\src.win-amd64-3.7\pymc\gp\incomplete_cholmodule.c"
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp\fortranobject.c' to sources.
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp' to include_dirs.
    building extension "pymc.gp.cov_funs.isotropic_cov_funs" sources
    f2py options: []
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp\cov_funs\fortranobject.c' to sources.
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp\cov_funs' to include_dirs.
      adding 'build\src.win-amd64-3.7\pymc\gp\cov_funs\isotropic_cov_funs-f2pywrappers.f' to sources.
    building extension "pymc.gp.cov_funs.distances" sources
    f2py options: []
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp\cov_funs\fortranobject.c' to sources.
      adding 'build\src.win-amd64-3.7\build\src.win-amd64-3.7\pymc\gp\cov_funs' to include_dirs.
    build_src: building npy-pkg config files
    running build_py
    creating build\lib.win-amd64-3.7
    creating build\lib.win-amd64-3.7\pymc
    copying pymc\calc_utils.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\CircularStochastic.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\CommonDeterministics.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\Container.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\datatypes.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\decorators.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\diagnostics.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\distributions.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\graph.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\InstantiationDecorators.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\Matplot.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\MCMC.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\Model.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\Node.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\NormalApproximation.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\NumpyDeterministics.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\progressbar.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\PyMCObjects.py -> build\lib.win-amd64-3.7\pymc
    copying pymc\ScipyDistributions.py -> build\lib.win-amd64-3.7\pymc

    running build_ext
    No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
    customize MSVCCompiler
    customize MSVCCompiler using build_ext
    get_default_fcompiler: matching types: '['gnu', 'intelv', 'absoft', 'compaqv', 'intelev', 'gnu95', 'g95', 'intelvem', 'intelem', 'flang']'
    customize GnuFCompiler
    customize IntelVisualFCompiler
    customize AbsoftFCompiler
    customize CompaqVisualFCompiler
    customize IntelItaniumVisualFCompiler
    customize Gnu95FCompiler
    Using built-in specs.
    COLLECT_GCC=C:\MinGW\bin\gfortran.exe
    COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
    Target: mingw32
    Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i586 --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-tune=generic --enable-libgomp --disable-libvtv --enable-nls
    Thread model: win32
    gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
    customize Gnu95FCompiler
    Using built-in specs.
    COLLECT_GCC=C:\MinGW\bin\gfortran.exe
    COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
    Target: mingw32
    Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i586 --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-tune=generic --enable-libgomp --disable-libvtv --enable-nls
    Thread model: win32
    gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
    customize Gnu95FCompiler using build_ext
    building 'pymc.flib' extension
    compiling C sources
    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'c:\users\sea\appdata\local\programs\python\python37\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Sea\\AppData\\Local\\Temp\\pip-install-scfexvur\\pymc\\setup.py'"'"'; __file__='"'"'C:\\Users\\Sea\\AppData\\Local\\Temp\\pip-install-scfexvur\\pymc\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\Sea\AppData\Local\Temp\pip-record-5phlxzbe\install-record.txt' --single-version-externally-managed --compile Check the logs for full command output.

我在MinGW

中安装了gFortran编译器,并打开MinGW Installation Manager(在C:\ MinGW \ libexec \ mingw-get \ guimain.exe中), 已检查的mingw32-gcc-fortran,然后单击安装>应用更改,甚至将C:\ MinGW \ bin添加到我的[[PATH在cmd中运行gcc命令:

gcc: fatal error: no input files compilation terminated.

我该如何解决?谢谢。

我正在cmd Windows 10上为python(3.7、64位)安装pymc软件包10 64位pip安装pymc或pip3安装pymc,但出现此错误(全部显示为红色)使用缓存的https://files.pythonhosted .org / ...

python windows pip fortran pymc
1个回答
0
投票
您必须安装其他功能:
© www.soinside.com 2019 - 2024. All rights reserved.