在google-colab中,保存已有的module环境到google drive后调用时遇到问题
我尝试通过在运行代码时将 Python 环境和模型保存到自己的 Google Drive 中,从而改进 Google Colab 文档。这样,在删除运行时并在第二天使用代码时,可以无需下载全部内容即可正常运行。
我使用了虚拟环境方法来下载模块。模型下载部分进行得很顺利,但在尝试调用已保存的模块时遇到了问题(我认为它们已保存,但在尝试使用时无法调用)。
Colab 链接:https://colab.research.google.com/drive/1y8NHYiItax3yvKLy6BbcLwGP4Kjq_FZU?usp=sharing *对于混乱的代码表示抱歉.我对 Python 还不太熟悉.
以下是代码中设置参数的部分:
# 配置 vits 所在文件夹名称
Drive_Name = 'Vi' #@param {type:'string'}
# 连接到 Google Drive
drive.mount('/content/gdrive')
gdrive_path = '/content/gdrive/MyDrive/'
# 创建目录
vi_dir = os.path.join(gdrive_path, Drive_Name)
webui_dir = os.path.join(gdrive_path, Drive_Name, 'vits-models')
以下是下载模块的部分:
#@title 6-下载需要的模块(忽略)
!pip install virtualenv
!virtualenv /content/gdrive/MyDrive/colab_env
!source /content/gdrive/MyDrive/colab_env/bin/activate; python3 -m pip install pip==21.3.1; pip install -r $webui_dir/requirements.txt
import sys
sys.path.append("/content/gdrive/MyDrive/colab_env/lib/python3.8/site-packages")
以下是出现问题的部分(在尝试运行程序时):
import sys
sys.path.append("/content/gdrive/MyDrive/colab_env/lib/python3.8/site-packages")
import numpy
print('Yes')
!source /content/gdrive/MyDrive/colab_env/bin/activate && /content/gdrive/MyDrive/colab_env/bin/python3 $webui_dir/app.py --share --device cuda --all
最后这段代码返回以下结果:
Yes
Traceback (most recent call last):
File "/content/gdrive/MyDrive/Vi/vits-models/app.py", line 5, in <module>
import utils
File "/content/gdrive/MyDrive/Vi/vits-models/utils.py", line 7, in <module>
import numpy as np
ModuleNotFoundError: No module named 'numpy'
我感到非常困惑。我可以看到 numpy 已经存在于我的虚拟环境中,而且我认为路径设置没有错误。我还将其添加到 sys.path 中,但问题仍然存在。
我尝试将最后一段代码改为:
import sys
sys.path.append("/content/gdrive/MyDrive/colab_env/lib/python3.8/site-packages")
import numpy
print('Yes')
!python3 $webui_dir/app.py --share --device cuda --all
现在返回:
Yes
Traceback (most recent call last):
File "/content/gdrive/MyDrive/Vi/vits-models/app.py", line 9, in <module>
import gradio as gr
ModuleNotFoundError: No module named 'gradio'
我在 site-packages 文件夹中进行了检查,确实找不到 gradio 文件夹。但是当第一次运行模块安装代码时,我可以在控制台中看到以下内容:
Collecting gradio==3.17.0
Using cached gradio-3.17.0-py3-none-any.whl (14.2 MB)
这是我的 Google Drive 结构:


顺便说一下,gradio 不在 site-packages 文件夹中)
因此,我真的很困惑代码的哪一部分出了问题. 请有人能帮忙吗?或者使用不同的方法来实现这个功能. 欢迎访问链接 (在问题上面)尝试运行代码(包含错误)。
我期望代码在删除运行时并打开新的运行时后能再次运行。结果是,代码只在安装模块的运行时中正常运行,而在打开新的运行时后无法正常运行。
提前感谢!