diff --git a/science/cantera/Portfile b/science/cantera/Portfile
index 598ec2e392d..f14af287590 100644
--- a/science/cantera/Portfile
+++ b/science/cantera/Portfile
@@ -26,13 +26,17 @@ github.tarball_from     archive
 
 python.default_version  310
 
+# SConstruct needs pkg_resources from setuptools.
+# This must match the python version of the scons port.
+set scons_python_version 312
+
 boost.depends_type      build
 
 set port_libfmt         libfmt8
 
 depends_build-append    port:gtest \
                         port:py${python.version}-pythran \
-                        port:py${python.version}-setuptools \
+                        port:py${scons_python_version}-setuptools \
                         port:scons
 
 depends_lib-append      path:share/pkgconfig/eigen3.pc:eigen3 \
@@ -43,17 +47,19 @@ depends_lib-append      path:share/pkgconfig/eigen3.pc:eigen3 \
 
 depends_run-append      port:py${python.version}-ruamel-yaml
 
+patchfiles              c++14.patch \
+                        python311.patch \
+                        python312.patch
+
 use_configure           no
 universal_variant       no
 
-# Needed for libfmt
-compiler.cxx_standard   2011
+# libfmt8 requires C++11
+# gtest requires C++14
+compiler.cxx_standard   2014
 compiler.thread_local_storage yes
 
-# The SConstruct needs pkg_resources from setuptools so have scons run
-# with the same python we're already using so that we can declare a
-# dependency on that python's setuptools port.
-build.cmd               ${python.bin} ${prefix}/bin/scons
+build.cmd               ${prefix}/bin/scons
 build.target            build
 build.args              prefix=${prefix} \
                         CC=${configure.cc} \
