web-dev-qa-db-fra.com

Comment démonter le disque dans Google Colab et remonter sur un autre disque?

[Mettre à jour]

J'ai fermé le cahier et l'ai rouvert après 1,5 h, maintenant l'exécution de drive.mount () nécessitera une nouvelle clé. Je ne suis pas sûr du temps minimum nécessaire pour attendre ... je ne sais pas si c'est normal d'attendre ...

Je suis monté sur le compte Google Drive A. Maintenant, je veux passer au compte B, mais je ne peux pas le faire, car il n'y a aucun moyen pour moi d'entrer une nouvelle clé d'authentification lors de l'exécution de drive.mount().

Ce que j'ai essayé et échoué:

  1. redémarrer le navigateur, redémarrer l'ordinateur
  2. utilisez force_remount=True dans drive.mount(), il ne remontera automatiquement que le compte A. Ne me demande pas de nouvelle cible de montage.
  3. changer de compte Un mot de passe
  4. changer le type d'exécution du GPU en Aucun et revenir au GPU
  5. tout ouvrir en mode navigation privée
  6. déconnecter tous les comptes Google

Existe-t-il une API qui peut:

  • oublier la clé d'authentification précédente pour qu'il me demande une nouvelle?
  • démonter le lecteur et oublier la clé d'authentification précédente?
10
Raymond Kwok

Redémarrer les runtimes et supprimer l'accès n'a pas aidé. J'ai découvert que le bloc-notes que j'utilisais créait des répertoires sur le point de montage:

from google.colab import drive
drive.mount('/content/drive')

Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).

J'ai dû d'abord supprimer les sous-répertoires du point de montage. Assurez-vous d'abord que votre lecteur n'est pas réellement monté!

!find /content/drive

/content/drive
/content/drive/My Drive
/content/drive/My Drive/Colab Notebooks
/content/drive/My Drive/Colab Notebooks/assignment4
/content/drive/My Drive/Colab Notebooks/assignment4/output_dir
/content/drive/My Drive/Colab Notebooks/assignment4/output_dir/2020-04-05_16:17:15

Les fichiers et répertoires ci-dessus ont été créés accidentellement par l'ordinateur portable avant que je ne monte le lecteur. Une fois que vous êtes sûr (êtes-vous sûr?) votre lecteur n'est pas monté, supprimez les sous-répertoires.

!rm -rf /content/drive

Après cela, j'ai pu monter le lecteur.

0
Ryan

Le code actuel de la fonction drive.mount() se trouve à l'adresse https://github.com/googlecolab/colabtools/blob/fe964e0e046c12394bae732eaaeda478bc5fa350/google/colab/drive.py

Il s'agit d'un wrapper pour l'exécutable du lecteur trouvé dans/opt/google/drive/drive. J'ai trouvé que l'exécutable accepte un indicateur authorize_new_user Qui peut être utilisé pour forcer une nouvelle authentification.

Copiez et collez le contenu du fichier drive.py dans votre ordinateur portable. Modifiez ensuite l'appel à d.sendline() actuellement sur la ligne 189 pour ressembler à ceci (notez l'ajout du drapeau authorize_new_user):

d.sendline(
      ('cat {fifo} | head -1 | ( {d}/drive '
       '--features=max_parallel_Push_task_instances:10,'
       'max_operation_batch_size:15,opendir_timeout_ms:{timeout_ms},'
       'virtual_folders:true '
       '--authorize_new_user=True '
       '--inet_family=' + inet_family + ' ' + metadata_auth_arg +
       '--preferences=trusted_root_certs_file_path:'
       '{d}/roots.pem,mount_point_path:{mnt} --console_auth 2>&1 '
       '| grep --line-buffered -E "{oauth_Prompt}|{problem_and_stopped}"; '
       'echo "{drive_exited}"; ) &').format(
           d=drive_dir,
           timeout_ms=timeout_ms,
           mnt=mountpoint,
           fifo=fifo,
           oauth_Prompt=oauth_Prompt,
           problem_and_stopped=problem_and_stopped,
           drive_exited=drive_exited))

Appelez la version du module drive de flush_and_unmount() ou celle que vous avez collée, puis appelez votre version de mount() pour vous connecter en tant qu'utilisateur différent!

0
webMan1