{"library":"pydrive2","title":"PyDrive2","description":"PyDrive2 is an actively maintained fork of PyDrive, a Python wrapper library for the Google Drive API. It simplifies common Google Drive API tasks like authentication and file management, providing an object-oriented interface. The library is currently at version 1.21.3 and has a regular release cadence, with recent updates addressing dependency compatibility and new features like fsspec integration.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install PyDrive2","pip install PyDrive2[fsspec]"],"cli":null},"imports":["from pydrive2.auth import GoogleAuth","from pydrive2.drive import GoogleDrive"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pydrive2.auth import GoogleAuth\nfrom pydrive2.drive import GoogleDrive\n\n# IMPORTANT: Place your 'client_secrets.json' file in the same directory\n# as this script, or specify its path in gauth.settings['client_config_file'].\n# Instructions to get client_secrets.json: https://docs.iterative.ai/PyDrive2/quickstart/#authentication\n\ngauth = GoogleAuth()\n# Uncomment the following line to specify a custom path for client_secrets.json\n# gauth.settings['client_config_file'] = os.path.join(os.getcwd(), 'path_to_your', 'client_secrets.json')\n\n# Try to load saved client credentials\ntry:\n    gauth.LoadCredentialsFile(\"mycreds.txt\")\nexcept Exception:\n    pass # File might not exist yet\n\nif gauth.credentials is None:\n    # Authenticate if credentials are not found or invalid.\n    # For persistent access, ensure your OAuth client is configured for 'offline' access\n    # to receive a refresh token. This requires manual setup in Google Cloud Console.\n    gauth.LocalWebserverAuth() \nelif gauth.access_token_expired:\n    # Refresh credentials if the access token has expired\n    gauth.Refresh()\nelse:\n    # Authorize with the loaded credentials\n    gauth.Authorize()\n\n# Save the current credentials to a file for future use\ngauth.SaveCredentialsFile(\"mycreds.txt\")\n\ndrive = GoogleDrive(gauth)\n\n# Create a text file and upload it to Google Drive\nfile_title = \"MyTestFile_PyDrive2.txt\"\nfile_content = \"Hello, Google Drive from PyDrive2!\"\n\nfile = drive.CreateFile({'title': file_title})\nfile.SetContentString(file_content)\nfile.Upload()\nprint(f\"Uploaded file: {file['title']} (ID: {file['id']})\")\n\n# List files in the root folder of Google Drive\nprint(\"\\nFiles in Google Drive (first 10):\")\nfile_list = drive.ListFile({'q': \"'root' in parents and trashed=false\"}).GetList()\nfor f in file_list:\n    print(f\"Title: {f['title']}, ID: {f['id']}\")","lang":"python","description":"This quickstart demonstrates how to authenticate with Google Drive using `PyDrive2` and then upload a simple text file. It utilizes `LocalWebserverAuth` for initial authorization and saves credentials for subsequent runs. Ensure you have downloaded your `client_secrets.json` from the Google API Console and placed it in your working directory. You must enable the Google Drive API for your project in the Google Cloud Console.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"1.21.3","pypi_latest":"1.21.3","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":5.9,"avg_import_s":1.32,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.1,"mem_mb":21.3,"disk_size":"145.9M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.14,"mem_mb":21.3,"disk_size":"148.4M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":5.7,"import_time_s":0.79,"mem_mb":21.2,"disk_size":"147M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":6.6,"import_time_s":0.83,"mem_mb":21.2,"disk_size":"150M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.59,"mem_mb":23.5,"disk_size":"150.8M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.56,"mem_mb":23.5,"disk_size":"153.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.7,"import_time_s":1.48,"mem_mb":23.5,"disk_size":"152M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.6,"import_time_s":1.4,"mem_mb":23.5,"disk_size":"155M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.59,"mem_mb":23.3,"disk_size":"142.2M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.66,"mem_mb":23.3,"disk_size":"145.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.8,"import_time_s":1.57,"mem_mb":23.3,"disk_size":"144M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.3,"import_time_s":1.56,"mem_mb":23.3,"disk_size":"147M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.54,"mem_mb":24.4,"disk_size":"142.0M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.52,"mem_mb":24.4,"disk_size":"144.9M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.7,"import_time_s":1.65,"mem_mb":24.4,"disk_size":"143M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.2,"import_time_s":1.56,"mem_mb":24.4,"disk_size":"146M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.99,"mem_mb":21.1,"disk_size":"145.9M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.08,"mem_mb":21.1,"disk_size":"148.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"PyDrive2","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":6.6,"import_time_s":0.89,"mem_mb":21.1,"disk_size":"147M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"fsspec","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":7.4,"import_time_s":0.9,"mem_mb":21.1,"disk_size":"150M"}]}}