diff --git a/quantnbody/fermionic/tools.py b/quantnbody/fermionic/tools.py index 743f6fe..603da25 100644 --- a/quantnbody/fermionic/tools.py +++ b/quantnbody/fermionic/tools.py @@ -4,7 +4,6 @@ from itertools import combinations from numba import njit, prange import matplotlib.pyplot as plt -import psi4 E_ = False e_ = False @@ -1650,6 +1649,16 @@ def get_info_from_psi4( string_geometry, Energy of the nuclei repulsion """ + + try: + import psi4 + except ImportError as exc: + raise RuntimeError( + "psi4 is not installed. This function need psi4 to work." + "Install it before using get_info_from_psi4" + ) from exc + + if not TELL_ME: # To prevent psi4 from printing the output in the terminal psi4.core.set_output_file("output_Psi4.txt", False) diff --git a/quantnbody/fermionic_fockspace/tools.py b/quantnbody/fermionic_fockspace/tools.py index eb56ed2..4b99109 100644 --- a/quantnbody/fermionic_fockspace/tools.py +++ b/quantnbody/fermionic_fockspace/tools.py @@ -3,7 +3,6 @@ import numpy as np from itertools import combinations from numba import njit, prange -import psi4 E_ = False e_ = False @@ -1340,6 +1339,17 @@ def get_info_from_psi4( string_geometry, Energy of the nuclei repulsion """ + + try: + import psi4 + except ImportError as exc: + raise RuntimeError( + "psi4 is not installed. This function need psi4 to work. " + "Install it before using get_info_from_psi4" + ) from exc + + + if not TELL_ME: # To prevent psi4 from printing the output in the terminal psi4.core.set_output_file("output_Psi4.txt", False) diff --git a/quantnbody/hybrid_fermionic_bosonic/tools.py b/quantnbody/hybrid_fermionic_bosonic/tools.py index a4b5709..080103f 100644 --- a/quantnbody/hybrid_fermionic_bosonic/tools.py +++ b/quantnbody/hybrid_fermionic_bosonic/tools.py @@ -4,7 +4,6 @@ from numba import njit, prange import matplotlib.pyplot as plt import scipy.sparse -import psi4 # ============================================================================= @@ -717,6 +716,16 @@ def cqed_rhf(lambda_vector, molecule_string, psi4_options_dict): >>> cqed_rhf_dictionary = cqed_rhf([0., 0., 1e-2], '''\nMg\nH 1 1.7\nsymmetry c1\n1 1\n''', psi4_options_dictionary) """ + try: + import psi4 + except ImportError as exc: + raise RuntimeError( + "psi4 is not installed. This function need psi4 to work." + "Install it before using cqed_rhf" + ) from exc + + + # define geometry using the molecule_string mol = psi4.geometry(molecule_string) # define options for the calculation @@ -1813,4 +1822,4 @@ def binom(n, k): for i in range(1, k+1): numerator *= (n - (k - i)) denominator *= i - return numerator // denominator \ No newline at end of file + return numerator // denominator diff --git a/testing/TESTS.py b/testing/TESTS.py index 8b10cdd..ffe7004 100644 --- a/testing/TESTS.py +++ b/testing/TESTS.py @@ -1,11 +1,17 @@ import unittest import numpy as np -import psi4 import scipy import quantnbody as qnb +def _psi4_is_available(): + try: + import psi4 + return True + except ImportError: + return False class MyTestCase(unittest.TestCase): + def test_FERMION_BASICS(self): # ========================================================| # Parameters for the simulation @@ -89,6 +95,9 @@ def test_FERMION_MODEL_HAMILTONIAN(self): def test_FERMION_AB_INITIO_HAMILTONIAN(self): + if not _psi4_is_available(): + self.skipTest("psi4 not installed, test skipped") + psi4.core.set_output_file("output_Psi4.txt", False) basisset = 'sto-3g' nelec_active = 2 # Number of active electrons in the Active-Space