diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py
index 578349cbc45b6d25e5aed5fc893d92d29fdcae40..7d51bbad4876162314d81e14a7960cf9b7aaee8f 100644
--- a/var/spack/repos/builtin/packages/petsc/package.py
+++ b/var/spack/repos/builtin/packages/petsc/package.py
@@ -218,6 +218,16 @@ def install(self, spec, prefix):
                         '-pc_type', 'hypre',
                         '-pc_hypre_type', 'boomeramg')
 
+    def setup_environment(self, spack_env, run_env):
+        # configure fails if these env vars are set outside of Spack
+        spack_env.unset('PETSC_DIR')
+        spack_env.unset('PETSC_ARCH')
+
+        # Set PETSC_DIR in the module file
+        run_env.set('PETSC_DIR', self.prefix)
+        run_env.unset('PETSC_ARCH')
+
     def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
-        # set up PETSC_DIR for everyone using PETSc package
+        # Set up PETSC_DIR for everyone using PETSc package
         spack_env.set('PETSC_DIR', self.prefix)
+        spack_env.unset('PETSC_ARCH')