PySCF 2.14: A Python Framework for Quantum Chemistry That Grows With You
Python module for quantum chemistry. Hermes, Kevin Koh, Peter Koval, Susi Lehtola, Zhendong Li, Junzi Liu, Narbe Mardirossian, James D.
At a glance
- What is it?
- PySCF is a Python module for quantum chemistry simulations, now at version 2.14.0. This review covers its installation, architecture, and where it fits among other quantum chemistry tools.
- Who is it for?
- Adopt PySCF if you need a flexible, Python-native quantum chemistry platform for method development or for integrating with machine learning and other Python tools. Avoid it if you require a turnkey GUI or if your production workflows depend on heavily optimized, single-purpose codes.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What PySCF Solves and Who It Is For
PySCF is a Python module for quantum chemistry. It solves the problem of providing a flexible, scriptable environment for electronic structure calculations, from simple Hartree-Fock to advanced correlated methods. It is aimed at researchers and developers who want to build custom workflows, test new algorithms, or teach quantum chemistry without writing everything from scratch. The README lists a wide range of methods, but the key is that PySCF is not a single-purpose code; it is a framework. The target user is someone comfortable with Python and willing to read the documentation. It is not for those who want a point-and-click interface. The project has been under active development for years, with a stable release in July 2026, so it is a mature tool in the academic ecosystem.
The Architecture: Python Core, External Functionals
A notable design choice is that PySCF does not implement density functionals itself. The README states that it employs external libraries for that task, and it specifically mentions Libxc and XCFun. This is a deliberate separation of concerns. The core handles the SCF cycle, integrals, and post-HF methods, while the functional evaluation is delegated. That means when you run a DFT calculation, you are relying on an external dependency for the exchange-correlation part. The upside is that adding new functionals is easier if the underlying library supports them. The downside is that you need to track two sets of citations and potential version mismatches. The README gives clear citation instructions for both Libxc and XCFun, which shows that the developers expect you to acknowledge this external dependency in publications.
Installation: Simple Picks, Modular Extensions
The README provides three installation levels. The base package is installed with `pip install pyscf`. For recent developments, there is `pyscf-forge`, which is a separate package. Then there is the `pyscf[all]` extra, which installs a set of extensions: dispersion, dmrgscf, fciqmc, icmpspt, properties, semiempirical, shciscf, and others. You can also install individual extensions, for example `pip install pyscf[dispersion]`. This modular approach is practical. You start with the core and add only what you need. The README also points to a custom installation manual for building from source, which is useful for users who need to link against specific BLAS or MPI libraries. The command-line steps are straightforward, but the real complexity comes when you want to use GPU acceleration or other optional dependencies, which are not covered in the README snippet.
Release Cadence and Stability Signals
The repository shows a steady release schedule. Version 2.14.0 was pushed on 2026-07-18, following 2.13.1 in June 2026 and 2.13.0 in April 2026. That is roughly one minor release every two to three months. This cadence suggests active maintenance and a responsive development team. The README links to a changelog, which is the right place to look for breaking changes. For a project of this scope, such frequent releases are a double-edged sword. You get new features quickly, but you also need to keep up with updates to avoid version drift. The existence of the `pyscf-forge` package indicates that some features are considered too experimental for the base release, which is a sensible way to separate stable code from cutting-edge developments.
The Citation Requirement: A Practical Burden
PySCF requires that you cite the base paper and, for DFT calculations, also cite the external functional library. The README provides the full citations for Libxc and XCFun. This is standard practice in computational chemistry, but it adds friction. If you publish a study that uses PySCF with Libxc, you need to include at least two citations. That is not a criticism of the project, but it is a real consideration for users who want to minimize citation overhead. The upside is that the citation instructions are explicit and easy to follow. The README even lists the author list for the base paper, which is long, so you know exactly what to include. For a project that is free and open source, this is a reasonable ask.
Limitations and Wrong-Tool Cases
The most obvious limitation is that PySCF is not a standalone quantum chemistry package in the sense of having a built-in GUI or a single binary that does everything. It requires Python and a certain level of programming comfort. For users who are not Python-savvy, the learning curve is steep. Also, because the project relies on external libraries for DFT functionals, you have to trust those libraries to be correct and up to date. If you need a functional that is not in Libxc or XCFun, you may be stuck. Another limitation is that the README does not mention any GPU support or specific performance optimizations. For large-scale production calculations, you might be better served by a code that is heavily optimized in C or Fortran, such as ORCA or Gaussian. PySCF is a wrong tool if you need a turnkey solution or if your calculation is so large that Python overhead becomes a bottleneck.
Alternatives: How PySCF Differs from Other Codes
A real alternative is Psi4, which is also an open-source quantum chemistry package. The difference in approach is that Psi4 has a more integrated design, with a focus on high-performance computing and a C++ core. Psi4 also has its own DFT implementation, whereas PySCF delegates that to external libraries. That means Psi4 might be more self-contained, but it is also less flexible for embedding in Python workflows. Another alternative is NWChem, which is a traditional Fortran-based code that is designed for massively parallel computations. NWChem is not Python-centric, so if you want to script your calculations in Python, PySCF is more natural. The key difference is the level of integration with the Python ecosystem. PySCF is built as a Python module from the ground up, which makes it easier to combine with machine learning libraries or custom analysis scripts. Psi4 also has a Python interface, but its core is not Python-native.
Maintenance and Upgrade Cost
The project is not archived and has recent releases, so maintenance is active. However, the README does not provide explicit upgrade instructions or migration guides. The changelog is the only source for what changed. This means that upgrading from 2.13 to 2.14 could introduce changes that affect your scripts. The cost of upgrading is the time you spend reading the changelog and testing your workflows. The license is Apache-2.0, which is permissive and allows commercial use, but you should still verify that any external dependencies, like Libxc or XCFun, have compatible licenses. The README does not mention any deprecation policy, so you need to be cautious about relying on features that might change. The modular extension system helps, because you can pin specific versions of extensions while keeping the core updated.
Editorial conclusion
Adopt PySCF if you need a flexible, Python-native quantum chemistry platform for method development or for integrating with machine learning and other Python tools. Avoid it if you require a turnkey GUI or if your production workflows depend on heavily optimized, single-purpose codes. Before adopting, verify that your target methods are in the base package or in an extension listed under pyscf[all], and check the changelog for breaking changes between 2.13 and 2.14. The 2026 release cadence shows active maintenance, but your specific functional or method needs must be confirmed against the FEATURES file.
Community notes