 // Methods of `PythonLibrary` required to load the Python library.
 private extension PythonLibrary {
   static let supportedMajorVersions: [Int] = [3, 2]
-  static let supportedMinorVersions: [Int?] = [nil] + Array(0...30).reversed()
-
+  static let supportedMinorVersions: [Int] = Array(0...30).reversed()
+  
   static let libraryPathVersionCharacter: Character = ":"
   
   #if canImport(Darwin)
   static var libraryNames = ["Python.framework/Versions/:/Python"]
   static var libraryPathExtensions = [""]
   static var librarySearchPaths = ["", "/usr/local/Frameworks/"]
+  static var libraryVersionSeparator = "."
   #elseif os(Linux)
   static var libraryNames = ["libpython:", "libpython:m"]
   static var libraryPathExtensions = [".so"]
   static var librarySearchPaths = [""]
+  static var libraryVersionSeparator = "."
+  #elseif os(Windows)
+  static var libraryNames = ["python:"]
+  static var libraryPathExtensions = [".dll"]
+  static var librarySearchPaths = [""]
+  static var libraryVersionSeparator = ""
   #endif
   
   static let libraryPaths: [String] = {

      }
    }
    
    let path = path.split(separator: libraryPathVersionCharacter)
      .joined(separator: versionString)
    return loadPythonLibrary(at: path)
  }
  
  static func loadPythonLibrary(at path: String) -> UnsafeMutableRawPointer? {
    log("Trying to load library at '\(path)'...")
    // Must be RTLD_GLOBAL because subsequent .so files from the imported python
    // modules may depend on this .so file.
    let pythonLibraryHandle = dlopen(path, RTLD_LAZY | RTLD_GLOBAL)
    
    if pythonLibraryHandle != nil {
      log("Library at '\(path)' was sucessfully loaded.")

  
  static func loadPythonLibrary(
    at path: String, version: PythonVersion
    ) -> UnsafeMutableRawPointer? {
    let versionString = version.versionString
    
    if let requiredPythonVersion = Environment.version.value {
