From 6a2c7476ebdc3e6f97bdd93af18bb366d3a62c69 Mon Sep 17 00:00:00 2001
From: Ammar Nejati <a.nejati@fz-juelich.de>
Date: Wed, 12 May 2021 17:37:33 +0200
Subject: [PATCH] Correct the Python import statements

The addition of the path of `BA/Wrap/Python/__init__.py` to `os.path`
is _not_ necessary anymore.

The import statements need to be changed:
```
import ba_plot -> from bornagain import ba_plot
import ba_fitmonitor -> from bornagain import ba_fitmonitor
```

The root-path of the project is correctly set in the shell script
`thisbornagain.sh`.

Consult e.g. "The Definitive Guide to Python import Statements" <https://chrisyeh96.github.io/2017/08/08/definitive-guide-python-imports.html>

Tested under Debian Buster, Python 3.7.3.

Resolves issue #1198
---
 Examples/fit/gisas2d/fit_gisas.py                            | 2 +-
 Examples/fit51_Basic/consecutive_fitting.py                  | 5 ++---
 Examples/fit52_Advanced/find_background.py                   | 3 +--
 Examples/fit52_Advanced/fit_along_slices.py                  | 3 +--
 Examples/fit52_Advanced/fit_with_masks.py                    | 3 +--
 Examples/fit52_Advanced/multiple_datasets.py                 | 2 +-
 Examples/fit54_ExternalMinimizer/lmfit_with_plotting.py      | 3 +--
 Examples/fit55_SpecularIntro/FitWithUncertainties.py         | 4 ++--
 Examples/fit55_SpecularIntro/RealLifeReflectometryFitting.py | 2 +-
 Examples/fit61_Galaxi/fit_galaxi_data.py                     | 3 +--
 Examples/scatter2d/ApproximationDA.py                        | 2 +-
 Examples/scatter2d/ApproximationLMA.py                       | 2 +-
 Examples/scatter2d/ApproximationSSCA.py                      | 2 +-
 Examples/scatter2d/BeamDivergence.py                         | 2 +-
 Examples/scatter2d/BiMaterialCylinders.py                    | 2 +-
 Examples/scatter2d/BoxesWithSpecularPeak.py                  | 2 +-
 Examples/scatter2d/BuriedParticles.py                        | 2 +-
 Examples/scatter2d/ConstantBackground.py                     | 2 +-
 Examples/scatter2d/CoreShellNanoparticles.py                 | 2 +-
 Examples/scatter2d/CorrelatedRoughness.py                    | 2 +-
 Examples/scatter2d/CosineRipplesAtRectLattice.py             | 2 +-
 Examples/scatter2d/Cylinders.py                              | 2 +-
 Examples/scatter2d/CylindersAndPrisms.py                     | 2 +-
 Examples/scatter2d/CylindersInAverageLayer.py                | 2 +-
 Examples/scatter2d/CylindersInBA.py                          | 2 +-
 Examples/scatter2d/CylindersWithSizeDistribution.py          | 2 +-
 Examples/scatter2d/DetectorResolutionFunction.py             | 2 +-
 Examples/scatter2d/DodecahedraSAS.py                         | 2 +-
 Examples/scatter2d/HalfSpheresInAverageTopLayer.py           | 2 +-
 Examples/scatter2d/HexagonalLatticesWithBasis.py             | 2 +-
 Examples/scatter2d/Interference1DRadialParaCrystal.py        | 2 +-
 Examples/scatter2d/Interference2DCenteredSquareLattice.py    | 2 +-
 Examples/scatter2d/Interference2DLatticeSumOfRotated.py      | 2 +-
 Examples/scatter2d/Interference2DParaCrystal.py              | 2 +-
 Examples/scatter2d/Interference2DRotatedSquareLattice.py     | 2 +-
 Examples/scatter2d/Interference2DSquareFiniteLattice.py      | 2 +-
 Examples/scatter2d/MagneticSpheres.py                        | 2 +-
 Examples/scatter2d/MesoCrystal.py                            | 2 +-
 Examples/scatter2d/ParticlesCrossingInterface.py             | 2 +-
 Examples/scatter2d/PolarizedSANS.py                          | 2 +-
 Examples/scatter2d/PositionVariance.py                       | 2 +-
 Examples/scatter2d/RectangularGrating.py                     | 2 +-
 Examples/scatter2d/RotatedPyramids.py                        | 2 +-
 Examples/scatter2d/SpheresAtHexLattice.py                    | 2 +-
 Examples/scatter2d/TriangularRipple.py                       | 2 +-
 .../scatter2d/TwoTypesOfCylindersWithSizeDistribution.py     | 2 +-
 Examples/specular/AlternatingLayers.py                       | 2 +-
 Examples/specular/BeamAngularDivergence.py                   | 2 +-
 Examples/specular/BeamFullDivergence.py                      | 2 +-
 Examples/specular/TOFRWithResolution.py                      | 2 +-
 Examples/specular/TimeOfFlightReflectometry.py               | 2 +-
 Examples/varia/AccessingSimulationResults.py                 | 2 +-
 Examples/varia/AllFormFactorsAvailable.py                    | 3 +--
 Examples/varia/AxesInDifferentUnits.py                       | 3 +--
 Examples/varia/CustomFormFactor.py                           | 2 +-
 Examples/varia/DepthProbe.py                                 | 2 +-
 Examples/varia/FindPeaks.py                                  | 3 +--
 Examples/varia/GratingMC.py                                  | 3 +--
 Examples/varia/Interference1DLattice.py                      | 2 +-
 Examples/varia/LargeParticlesFormFactor.py                   | 3 +--
 Examples/varia/OffSpecularSimulation.py                      | 2 +-
 Examples/varia/SpecularSimulationWithRoughness.py            | 2 +-
 Wrap/Python/__init__.py.in                                   | 3 ---
 Wrap/Python/ba_fitmonitor.py                                 | 2 +-
 64 files changed, 65 insertions(+), 79 deletions(-)

diff --git a/Examples/fit/gisas2d/fit_gisas.py b/Examples/fit/gisas2d/fit_gisas.py
index e546facdced..abd933db1e1 100755
--- a/Examples/fit/gisas2d/fit_gisas.py
+++ b/Examples/fit/gisas2d/fit_gisas.py
@@ -7,7 +7,7 @@ Fake experimental data are generated by gisas_fake1.
 
 import gisas_model1 as model
 import bornagain as ba
-import ba_fitmonitor
+from bornagain import ba_fitmonitor
 import numpy as np
 import os
 from matplotlib import pyplot as plt
diff --git a/Examples/fit51_Basic/consecutive_fitting.py b/Examples/fit51_Basic/consecutive_fitting.py
index dff41607936..ac78f42047b 100755
--- a/Examples/fit51_Basic/consecutive_fitting.py
+++ b/Examples/fit51_Basic/consecutive_fitting.py
@@ -10,8 +10,7 @@ after that to find precise minimum location.
 import numpy as np
 from matplotlib import pyplot as plt
 import bornagain as ba
-import ba_fitmonitor
-from bornagain import deg, angstrom, nm
+from bornagain import ba_fitmonitor, deg, angstrom, nm
 
 
 def get_sample(params):
@@ -78,7 +77,7 @@ def run_fitting():
     fit_objective = ba.FitObjective()
     fit_objective.addSimulationAndData(get_simulation, real_data, 1)
     fit_objective.initPrint(10)
-    observer = ba_fitmonitor.PlotterGISAS()
+    observer = bornagain.ba_fitmonitor.PlotterGISAS()
     fit_objective.initPlot(10, observer)
     """
     Setting fitting parameters with starting values.
diff --git a/Examples/fit52_Advanced/find_background.py b/Examples/fit52_Advanced/find_background.py
index 193d9081313..83a7c1e17db 100755
--- a/Examples/fit52_Advanced/find_background.py
+++ b/Examples/fit52_Advanced/find_background.py
@@ -10,8 +10,7 @@ scale and background factors.
 import numpy as np
 from matplotlib import pyplot as plt
 import bornagain as ba
-import ba_fitmonitor
-from bornagain import deg, angstrom, nm
+from bornagain import deg, angstrom, nm, ba_fitmonitor
 
 
 def get_sample(params):
diff --git a/Examples/fit52_Advanced/fit_along_slices.py b/Examples/fit52_Advanced/fit_along_slices.py
index 0c7a786fb8d..29d734681f1 100755
--- a/Examples/fit52_Advanced/fit_along_slices.py
+++ b/Examples/fit52_Advanced/fit_along_slices.py
@@ -5,8 +5,7 @@ Fitting example: fit along slices
 
 from matplotlib import pyplot as plt
 import bornagain as ba
-import ba_plot
-from bornagain import deg, angstrom, nm
+from bornagain import deg, angstrom, nm, ba_plot
 
 phi_slice_value = 0.0  # position of vertical slice in deg
 alpha_slice_value = 0.2  # position of horizontal slice in deg
diff --git a/Examples/fit52_Advanced/fit_with_masks.py b/Examples/fit52_Advanced/fit_with_masks.py
index 6a11e39f144..5f3d8a3e15f 100755
--- a/Examples/fit52_Advanced/fit_with_masks.py
+++ b/Examples/fit52_Advanced/fit_with_masks.py
@@ -6,8 +6,7 @@ Fitting example: fit with masks
 import numpy as np
 from matplotlib import pyplot as plt
 import bornagain as ba
-from bornagain import deg, angstrom, nm
-import ba_fitmonitor
+from bornagain import deg, angstrom, nm, ba_fitmonitor
 
 
 def get_sample(params):
diff --git a/Examples/fit52_Advanced/multiple_datasets.py b/Examples/fit52_Advanced/multiple_datasets.py
index 932cfbf74f1..9eb9272e1dc 100755
--- a/Examples/fit52_Advanced/multiple_datasets.py
+++ b/Examples/fit52_Advanced/multiple_datasets.py
@@ -8,7 +8,7 @@ import matplotlib
 from matplotlib import pyplot as plt
 import bornagain as ba
 from bornagain import deg, nm
-import ba_plot as bp
+import bornagain.ba_plot as bp
 
 def get_sample(params):
     """
diff --git a/Examples/fit54_ExternalMinimizer/lmfit_with_plotting.py b/Examples/fit54_ExternalMinimizer/lmfit_with_plotting.py
index 06e1c0c78f3..2a42a0d0b2d 100755
--- a/Examples/fit54_ExternalMinimizer/lmfit_with_plotting.py
+++ b/Examples/fit54_ExternalMinimizer/lmfit_with_plotting.py
@@ -6,8 +6,7 @@ Fit progress is plotted using lmfit iteration calbback function.
 import numpy as np
 from matplotlib import pyplot as plt
 import bornagain as ba
-import ba_fitmonitor
-from bornagain import deg, angstrom, nm
+from bornagain import deg, angstrom, nm, ba_fitmonitor
 import lmfit
 
 
diff --git a/Examples/fit55_SpecularIntro/FitWithUncertainties.py b/Examples/fit55_SpecularIntro/FitWithUncertainties.py
index c2da703ee6a..2720e256462 100755
--- a/Examples/fit55_SpecularIntro/FitWithUncertainties.py
+++ b/Examples/fit55_SpecularIntro/FitWithUncertainties.py
@@ -13,8 +13,8 @@ and use genetic algorithm as the minimizer.
 """
 
 import bornagain as ba
-import ba_fitmonitor as bafim
-import ba_plot
+import bornagain.ba_fitmonitor as bafim
+from bornagain import ba_plot
 import numpy as np
 from matplotlib import pyplot as plt
 import os
diff --git a/Examples/fit55_SpecularIntro/RealLifeReflectometryFitting.py b/Examples/fit55_SpecularIntro/RealLifeReflectometryFitting.py
index 843ebfbef8a..1882f8ecb11 100755
--- a/Examples/fit55_SpecularIntro/RealLifeReflectometryFitting.py
+++ b/Examples/fit55_SpecularIntro/RealLifeReflectometryFitting.py
@@ -35,7 +35,7 @@ from matplotlib import pyplot as plt
 import numpy as np
 import os
 import bornagain as ba
-import ba_plot
+from bornagain import ba_plot
 from scipy.optimize import differential_evolution
 
 
diff --git a/Examples/fit61_Galaxi/fit_galaxi_data.py b/Examples/fit61_Galaxi/fit_galaxi_data.py
index c2dec2da8d6..ef24d65c633 100755
--- a/Examples/fit61_Galaxi/fit_galaxi_data.py
+++ b/Examples/fit61_Galaxi/fit_galaxi_data.py
@@ -4,8 +4,7 @@ Fitting experimental data: spherical nanoparticles with size distribution
 in 3 layers system (experiment at GALAXI).
 """
 import bornagain as ba
-from bornagain import nm
-import ba_fitmonitor
+from bornagain import nm, ba_fitmonitor
 import os
 from matplotlib import pyplot as plt
 
diff --git a/Examples/scatter2d/ApproximationDA.py b/Examples/scatter2d/ApproximationDA.py
index 34bf608e394..c26515ae49e 100755
--- a/Examples/scatter2d/ApproximationDA.py
+++ b/Examples/scatter2d/ApproximationDA.py
@@ -58,7 +58,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/ApproximationLMA.py b/Examples/scatter2d/ApproximationLMA.py
index 8f9982be9f5..4b0a9ccf393 100755
--- a/Examples/scatter2d/ApproximationLMA.py
+++ b/Examples/scatter2d/ApproximationLMA.py
@@ -65,7 +65,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/ApproximationSSCA.py b/Examples/scatter2d/ApproximationSSCA.py
index a08caa88421..d705710252a 100755
--- a/Examples/scatter2d/ApproximationSSCA.py
+++ b/Examples/scatter2d/ApproximationSSCA.py
@@ -59,7 +59,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/BeamDivergence.py b/Examples/scatter2d/BeamDivergence.py
index 08aa1a32b45..a0f09254b9a 100755
--- a/Examples/scatter2d/BeamDivergence.py
+++ b/Examples/scatter2d/BeamDivergence.py
@@ -57,7 +57,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/BiMaterialCylinders.py b/Examples/scatter2d/BiMaterialCylinders.py
index 98e31ac65ed..23630c243cc 100755
--- a/Examples/scatter2d/BiMaterialCylinders.py
+++ b/Examples/scatter2d/BiMaterialCylinders.py
@@ -62,7 +62,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/BoxesWithSpecularPeak.py b/Examples/scatter2d/BoxesWithSpecularPeak.py
index 57041e7b5e6..58381fedd5c 100755
--- a/Examples/scatter2d/BoxesWithSpecularPeak.py
+++ b/Examples/scatter2d/BoxesWithSpecularPeak.py
@@ -59,7 +59,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/BuriedParticles.py b/Examples/scatter2d/BuriedParticles.py
index 59c187d9935..a644e60d251 100755
--- a/Examples/scatter2d/BuriedParticles.py
+++ b/Examples/scatter2d/BuriedParticles.py
@@ -56,7 +56,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/ConstantBackground.py b/Examples/scatter2d/ConstantBackground.py
index d0e307e557f..30f359f723a 100755
--- a/Examples/scatter2d/ConstantBackground.py
+++ b/Examples/scatter2d/ConstantBackground.py
@@ -50,7 +50,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/CoreShellNanoparticles.py b/Examples/scatter2d/CoreShellNanoparticles.py
index 98b4942e261..ca99f57f55a 100755
--- a/Examples/scatter2d/CoreShellNanoparticles.py
+++ b/Examples/scatter2d/CoreShellNanoparticles.py
@@ -55,7 +55,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/CorrelatedRoughness.py b/Examples/scatter2d/CorrelatedRoughness.py
index fb911718ed3..b208badd2e8 100755
--- a/Examples/scatter2d/CorrelatedRoughness.py
+++ b/Examples/scatter2d/CorrelatedRoughness.py
@@ -51,7 +51,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/CosineRipplesAtRectLattice.py b/Examples/scatter2d/CosineRipplesAtRectLattice.py
index f8e2f64db54..01be4cfcb4c 100755
--- a/Examples/scatter2d/CosineRipplesAtRectLattice.py
+++ b/Examples/scatter2d/CosineRipplesAtRectLattice.py
@@ -59,7 +59,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/Cylinders.py b/Examples/scatter2d/Cylinders.py
index 4ebc23eadc3..2f83107f473 100755
--- a/Examples/scatter2d/Cylinders.py
+++ b/Examples/scatter2d/Cylinders.py
@@ -49,7 +49,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/CylindersAndPrisms.py b/Examples/scatter2d/CylindersAndPrisms.py
index 8ef465bb0f4..4869cd97883 100755
--- a/Examples/scatter2d/CylindersAndPrisms.py
+++ b/Examples/scatter2d/CylindersAndPrisms.py
@@ -55,7 +55,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/CylindersInAverageLayer.py b/Examples/scatter2d/CylindersInAverageLayer.py
index c2775c51e05..1c1bdfb5c8a 100755
--- a/Examples/scatter2d/CylindersInAverageLayer.py
+++ b/Examples/scatter2d/CylindersInAverageLayer.py
@@ -51,7 +51,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/CylindersInBA.py b/Examples/scatter2d/CylindersInBA.py
index 649859b1013..99464e08c78 100755
--- a/Examples/scatter2d/CylindersInBA.py
+++ b/Examples/scatter2d/CylindersInBA.py
@@ -46,7 +46,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/CylindersWithSizeDistribution.py b/Examples/scatter2d/CylindersWithSizeDistribution.py
index bd44f7119fa..5b7606e798c 100755
--- a/Examples/scatter2d/CylindersWithSizeDistribution.py
+++ b/Examples/scatter2d/CylindersWithSizeDistribution.py
@@ -52,7 +52,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/DetectorResolutionFunction.py b/Examples/scatter2d/DetectorResolutionFunction.py
index 894b5143fd8..45589161e82 100755
--- a/Examples/scatter2d/DetectorResolutionFunction.py
+++ b/Examples/scatter2d/DetectorResolutionFunction.py
@@ -49,7 +49,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/DodecahedraSAS.py b/Examples/scatter2d/DodecahedraSAS.py
index da5cc69801a..486ee103705 100755
--- a/Examples/scatter2d/DodecahedraSAS.py
+++ b/Examples/scatter2d/DodecahedraSAS.py
@@ -46,7 +46,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/HalfSpheresInAverageTopLayer.py b/Examples/scatter2d/HalfSpheresInAverageTopLayer.py
index 3e934490172..ff5e97c051b 100755
--- a/Examples/scatter2d/HalfSpheresInAverageTopLayer.py
+++ b/Examples/scatter2d/HalfSpheresInAverageTopLayer.py
@@ -60,7 +60,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/HexagonalLatticesWithBasis.py b/Examples/scatter2d/HexagonalLatticesWithBasis.py
index b9ba7c19e51..cce34241ea5 100755
--- a/Examples/scatter2d/HexagonalLatticesWithBasis.py
+++ b/Examples/scatter2d/HexagonalLatticesWithBasis.py
@@ -67,7 +67,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/Interference1DRadialParaCrystal.py b/Examples/scatter2d/Interference1DRadialParaCrystal.py
index a295456cf31..6a4005248d6 100755
--- a/Examples/scatter2d/Interference1DRadialParaCrystal.py
+++ b/Examples/scatter2d/Interference1DRadialParaCrystal.py
@@ -54,7 +54,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/Interference2DCenteredSquareLattice.py b/Examples/scatter2d/Interference2DCenteredSquareLattice.py
index 3d4d174f276..6da1f63d585 100755
--- a/Examples/scatter2d/Interference2DCenteredSquareLattice.py
+++ b/Examples/scatter2d/Interference2DCenteredSquareLattice.py
@@ -65,7 +65,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/Interference2DLatticeSumOfRotated.py b/Examples/scatter2d/Interference2DLatticeSumOfRotated.py
index 20b12bd1822..9bc14a70ed6 100755
--- a/Examples/scatter2d/Interference2DLatticeSumOfRotated.py
+++ b/Examples/scatter2d/Interference2DLatticeSumOfRotated.py
@@ -47,7 +47,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/Interference2DParaCrystal.py b/Examples/scatter2d/Interference2DParaCrystal.py
index d9193a04fe7..c117d174c5e 100755
--- a/Examples/scatter2d/Interference2DParaCrystal.py
+++ b/Examples/scatter2d/Interference2DParaCrystal.py
@@ -60,7 +60,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/Interference2DRotatedSquareLattice.py b/Examples/scatter2d/Interference2DRotatedSquareLattice.py
index da0bc3ed6a1..1054b0f9279 100755
--- a/Examples/scatter2d/Interference2DRotatedSquareLattice.py
+++ b/Examples/scatter2d/Interference2DRotatedSquareLattice.py
@@ -58,7 +58,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/Interference2DSquareFiniteLattice.py b/Examples/scatter2d/Interference2DSquareFiniteLattice.py
index 40edd4f2260..3819c3271f7 100755
--- a/Examples/scatter2d/Interference2DSquareFiniteLattice.py
+++ b/Examples/scatter2d/Interference2DSquareFiniteLattice.py
@@ -56,7 +56,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/MagneticSpheres.py b/Examples/scatter2d/MagneticSpheres.py
index 9b3fdb868c5..eb0b28055ab 100755
--- a/Examples/scatter2d/MagneticSpheres.py
+++ b/Examples/scatter2d/MagneticSpheres.py
@@ -58,7 +58,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/MesoCrystal.py b/Examples/scatter2d/MesoCrystal.py
index bceecc20210..1aae130b97b 100755
--- a/Examples/scatter2d/MesoCrystal.py
+++ b/Examples/scatter2d/MesoCrystal.py
@@ -61,7 +61,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/ParticlesCrossingInterface.py b/Examples/scatter2d/ParticlesCrossingInterface.py
index 1aa31fd09bf..1a0c7c669fa 100755
--- a/Examples/scatter2d/ParticlesCrossingInterface.py
+++ b/Examples/scatter2d/ParticlesCrossingInterface.py
@@ -74,7 +74,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/PolarizedSANS.py b/Examples/scatter2d/PolarizedSANS.py
index 93f758a26df..02d9138ed60 100755
--- a/Examples/scatter2d/PolarizedSANS.py
+++ b/Examples/scatter2d/PolarizedSANS.py
@@ -68,7 +68,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation) # TODO: restore units=ba.Axes.QSPACE)
diff --git a/Examples/scatter2d/PositionVariance.py b/Examples/scatter2d/PositionVariance.py
index 3612292b323..5ad816efd9b 100755
--- a/Examples/scatter2d/PositionVariance.py
+++ b/Examples/scatter2d/PositionVariance.py
@@ -69,7 +69,7 @@ def run_one(hasVariance, xi, nPlot, title):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     fig, axs = plt.subplots(3, 2, figsize=(10, 13))
 
     xi1 =  5*deg
diff --git a/Examples/scatter2d/RectangularGrating.py b/Examples/scatter2d/RectangularGrating.py
index 68dd1a5c2e6..c64f4317d00 100755
--- a/Examples/scatter2d/RectangularGrating.py
+++ b/Examples/scatter2d/RectangularGrating.py
@@ -63,7 +63,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/RotatedPyramids.py b/Examples/scatter2d/RotatedPyramids.py
index 2059fb009df..b70951f3ccf 100755
--- a/Examples/scatter2d/RotatedPyramids.py
+++ b/Examples/scatter2d/RotatedPyramids.py
@@ -50,7 +50,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/SpheresAtHexLattice.py b/Examples/scatter2d/SpheresAtHexLattice.py
index 1bcc4e12fe0..eb01ae4d311 100755
--- a/Examples/scatter2d/SpheresAtHexLattice.py
+++ b/Examples/scatter2d/SpheresAtHexLattice.py
@@ -58,7 +58,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/TriangularRipple.py b/Examples/scatter2d/TriangularRipple.py
index 8ed97467ca5..479f9328034 100755
--- a/Examples/scatter2d/TriangularRipple.py
+++ b/Examples/scatter2d/TriangularRipple.py
@@ -59,7 +59,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/scatter2d/TwoTypesOfCylindersWithSizeDistribution.py b/Examples/scatter2d/TwoTypesOfCylindersWithSizeDistribution.py
index b22792a589e..6d395efc44f 100755
--- a/Examples/scatter2d/TwoTypesOfCylindersWithSizeDistribution.py
+++ b/Examples/scatter2d/TwoTypesOfCylindersWithSizeDistribution.py
@@ -61,7 +61,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/specular/AlternatingLayers.py b/Examples/specular/AlternatingLayers.py
index 9b957efe501..dfc717193a0 100755
--- a/Examples/specular/AlternatingLayers.py
+++ b/Examples/specular/AlternatingLayers.py
@@ -40,7 +40,7 @@ def get_simulation(sample, scan_size=500):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/specular/BeamAngularDivergence.py b/Examples/specular/BeamAngularDivergence.py
index 81509546370..3f2e347d567 100755
--- a/Examples/specular/BeamAngularDivergence.py
+++ b/Examples/specular/BeamAngularDivergence.py
@@ -90,7 +90,7 @@ if __name__ == '__main__':
     datadir = os.getenv('BORNAGAIN_EXAMPLE_DATA_DIR', '')
     data_fname = os.path.join(datadir, "genx_angular_divergence.dat.gz")
 
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/specular/BeamFullDivergence.py b/Examples/specular/BeamFullDivergence.py
index 79a342412cc..9b585dba78a 100755
--- a/Examples/specular/BeamFullDivergence.py
+++ b/Examples/specular/BeamFullDivergence.py
@@ -72,7 +72,7 @@ def get_simulation(sample, scan_size=500):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/specular/TOFRWithResolution.py b/Examples/specular/TOFRWithResolution.py
index 654cd03059f..b6989006342 100755
--- a/Examples/specular/TOFRWithResolution.py
+++ b/Examples/specular/TOFRWithResolution.py
@@ -66,7 +66,7 @@ def get_simulation(sample, scan_size=500):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/specular/TimeOfFlightReflectometry.py b/Examples/specular/TimeOfFlightReflectometry.py
index 7335778a280..bb10942d71c 100755
--- a/Examples/specular/TimeOfFlightReflectometry.py
+++ b/Examples/specular/TimeOfFlightReflectometry.py
@@ -55,7 +55,7 @@ def get_simulation(sample, scan_size=500):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/varia/AccessingSimulationResults.py b/Examples/varia/AccessingSimulationResults.py
index 5ae4b9e66cd..928339d37e3 100755
--- a/Examples/varia/AccessingSimulationResults.py
+++ b/Examples/varia/AccessingSimulationResults.py
@@ -7,7 +7,7 @@ import math
 import random
 import bornagain as ba
 from bornagain import angstrom, deg, nm, nm2, kvector_t
-import ba_plot
+from bornagain import ba_plot
 from matplotlib import pyplot as plt
 from matplotlib import rcParams
 
diff --git a/Examples/varia/AllFormFactorsAvailable.py b/Examples/varia/AllFormFactorsAvailable.py
index fa762cbe53d..adc5394cfa1 100755
--- a/Examples/varia/AllFormFactorsAvailable.py
+++ b/Examples/varia/AllFormFactorsAvailable.py
@@ -4,8 +4,7 @@ All form factors available in BornAgain in the Born Approximation
 """
 import numpy
 import bornagain as ba
-import ba_plot
-from bornagain import deg, angstrom
+from bornagain import deg, angstrom, ba_plot
 from matplotlib import pyplot as plt
 
 phi_min, phi_max = -2, 2.0
diff --git a/Examples/varia/AxesInDifferentUnits.py b/Examples/varia/AxesInDifferentUnits.py
index ec39f315c70..2a2af592994 100755
--- a/Examples/varia/AxesInDifferentUnits.py
+++ b/Examples/varia/AxesInDifferentUnits.py
@@ -4,8 +4,7 @@ In this example we demonstrate how to plot simulation results with
 axes in different units (nbins, mm, degs and QyQz).
 """
 import bornagain as ba
-from bornagain import angstrom, deg, nm, nm2, kvector_t
-import ba_plot
+from bornagain import angstrom, deg, nm, nm2, kvector_t, ba_plot
 from matplotlib import pyplot as plt
 from matplotlib import rcParams
 
diff --git a/Examples/varia/CustomFormFactor.py b/Examples/varia/CustomFormFactor.py
index 2b0b439cbda..1f40b6ad644 100755
--- a/Examples/varia/CustomFormFactor.py
+++ b/Examples/varia/CustomFormFactor.py
@@ -80,7 +80,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Examples/varia/DepthProbe.py b/Examples/varia/DepthProbe.py
index 78e086348ac..00b8ce7b941 100755
--- a/Examples/varia/DepthProbe.py
+++ b/Examples/varia/DepthProbe.py
@@ -82,7 +82,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation, aspect='auto')
diff --git a/Examples/varia/FindPeaks.py b/Examples/varia/FindPeaks.py
index 6f8effff5f0..9aa6405b8f5 100755
--- a/Examples/varia/FindPeaks.py
+++ b/Examples/varia/FindPeaks.py
@@ -5,8 +5,7 @@ Monte-carlo integration is used to get rid of
 large-particle form factor oscillations.
 """
 import bornagain as ba
-from bornagain import deg, angstrom, nm, micrometer
-import ba_plot
+from bornagain import deg, angstrom, nm, micrometer, ba_plot
 from matplotlib import pyplot as plt
 
 
diff --git a/Examples/varia/GratingMC.py b/Examples/varia/GratingMC.py
index 758754f5d55..a45dd34dac3 100755
--- a/Examples/varia/GratingMC.py
+++ b/Examples/varia/GratingMC.py
@@ -5,8 +5,7 @@ Monte-carlo integration is used to get rid of
 large-particle form factor oscillations.
 """
 import bornagain as ba
-from bornagain import deg, angstrom, nm, micrometer
-import ba_plot
+from bornagain import deg, angstrom, nm, micrometer, ba_plot
 from matplotlib import pyplot as plt
 
 
diff --git a/Examples/varia/Interference1DLattice.py b/Examples/varia/Interference1DLattice.py
index bb64d51b582..bc8a5aa71f2 100755
--- a/Examples/varia/Interference1DLattice.py
+++ b/Examples/varia/Interference1DLattice.py
@@ -62,7 +62,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation, intensity_min=1e-03)
diff --git a/Examples/varia/LargeParticlesFormFactor.py b/Examples/varia/LargeParticlesFormFactor.py
index 7a04c0677fa..7164794cda0 100755
--- a/Examples/varia/LargeParticlesFormFactor.py
+++ b/Examples/varia/LargeParticlesFormFactor.py
@@ -8,8 +8,7 @@ oscillates rapidly within one detector bin and analytical calculations
 In this case Monte-Carlo integration over detector bin should be used.
 """
 import bornagain as ba
-from bornagain import deg, angstrom, nm
-import ba_plot
+from bornagain import deg, angstrom, nm, ba_plot
 from matplotlib import pyplot as plt
 
 default_cylinder_radius = 10*nm
diff --git a/Examples/varia/OffSpecularSimulation.py b/Examples/varia/OffSpecularSimulation.py
index 5d19cb021a8..b500ca643dc 100755
--- a/Examples/varia/OffSpecularSimulation.py
+++ b/Examples/varia/OffSpecularSimulation.py
@@ -70,7 +70,7 @@ def get_simulation(sample):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation, intensity_min=1)
diff --git a/Examples/varia/SpecularSimulationWithRoughness.py b/Examples/varia/SpecularSimulationWithRoughness.py
index 5941d025d1a..fe7472671d5 100755
--- a/Examples/varia/SpecularSimulationWithRoughness.py
+++ b/Examples/varia/SpecularSimulationWithRoughness.py
@@ -52,7 +52,7 @@ def get_simulation(sample, scan_size=500):
 
 
 if __name__ == '__main__':
-    import ba_plot
+    from bornagain import ba_plot
     sample = get_sample()
     simulation = get_simulation(sample)
     ba_plot.run_and_plot(simulation)
diff --git a/Wrap/Python/__init__.py.in b/Wrap/Python/__init__.py.in
index 7dbac77823e..01e522db312 100644
--- a/Wrap/Python/__init__.py.in
+++ b/Wrap/Python/__init__.py.in
@@ -3,9 +3,6 @@ import sys, os
 sys.path.append(os.path.abspath(
                 os.path.join(os.path.split(__file__)[0], '@BA_MODULES_IMPORT_PATH@')))
 
-# this line needed to fix python3 import problem
-sys.path.append(os.path.abspath(os.path.dirname(__file__)))
-
 # this is needed to adapt to the changes in Python 3.8 on Windows regarding dll loading
 # see https://docs.python.org/3/whatsnew/3.8.html#ctypes
 if sys.version_info >= (3, 8, 0) and sys.platform == 'win32':
diff --git a/Wrap/Python/ba_fitmonitor.py b/Wrap/Python/ba_fitmonitor.py
index 33b14cd7303..fb3ab0f4f8e 100644
--- a/Wrap/Python/ba_fitmonitor.py
+++ b/Wrap/Python/ba_fitmonitor.py
@@ -13,7 +13,7 @@
 #  **************************************************************************  #
 
 import bornagain as ba
-import ba_plot as bp
+from bornagain import ba_plot as bp
 try:  # workaround for build servers
     import numpy as np
     from matplotlib import pyplot as plt
-- 
GitLab