问题
Is there any way to upload my code in .py files and import them in colab code cells?
The other way I found is to create a local Jupyter notebook then upload it to Colab, is it the only way?
回答1:
You can save it first, then import it.
from google.colab import files
src = list(files.upload().values())[0]
open('mylib.py','wb').write(src)
import mylib
Update (nov 2018): Now you can upload easily by
- click at [>] to open the left pane
- choose file tab
- click [upload] and choose your [mylib.py]
- import mylib
Update (oct 2019): If you don't want to upload every time, you can store it in S3 and mount it to Colab, as shown in this gist
回答2:
- You can upload local files to google colab by using upload() function in google.colab.files
- If you have files on github, then clone the repo using
!git clone https://github.com/username/repo_name.git. Then just like in jupyter notebook load it using the magic function %load
%load filename.py
.
回答3:
In case anyone else is interested to know how to import files/packages from gdrive inside a google colab. The following procedure worked for me:
1) Mount your google drive in google colab:
from google.colab import drive
drive.mount('/content/gdrive/')
2) Append the directory to your python path using sys:
import sys
sys.path.append('/content/gdrive/mypythondirectory')
Now you should be able to import stuff from that directory!
回答4:
Based on the answer by Korakot Chaovavanich, I created the function below to download all files needed within a Colab instance.
from google.colab import files
def getLocalFiles():
_files = files.upload()
if len(_files) >0:
for k,v in _files.items():
open(k,'wb').write(v)
getLocalFiles()
You can then use the usual 'import' statement to import your local files in Colab. I hope this helps
回答5:
Try this way:
I have a package named plant_seedlings. The package is stored in google drive. What I should do is to copy this package in /usr/local/lib/python3.6/dist-packages/.
!cp /content/drive/ai/plant_seedlings.tar.gz /usr/local/lib/python3.6/dist-packages/
!cd /usr/local/lib/python3.6/dist-packages/ && tar -xzf plant_seedlings.tar.gz
!cd /content
!python -m plant_seedlings
回答6:
You can upload those .py files to Google drive and allow Colab to use to them:
!mkdir -p drive
!google-drive-ocamlfuse drive
All your files and folders in root folder will be in drive
.
回答7:
I face the same problem. After reading numerous posts, I would like to introduce the following solution I finally chose over many other methods (e.g. use urllib
, httpimport
, clone from GitHub, package the modules for installation, etc). The solution utilizes Google Drive API (official doc) for proper authorization.
Advantages:
- Easy and safe (no need for code to handle file operation exceptions and/or additional authorization)
- Module files safeguarded by Google account credentials (no one else can view/take/edit them)
- You control what to upload/access (you can change/revoke access anytime on a file-by-file basis)
- Everything in one place (no need to rely upon or manage another file hosting service)
- Freedom to rename/relocate module files (not path-based and won't break your/other's notebook code)
Steps:
- Save your .py module file to Google Drive - you should have that since you're already using Colab
- Right click on it, "Get shareable link", copy the part after "
id=
" - the file id assigned by Google Drive - Add and run the following code snippets to your Colab notebook:
!pip install pydrive # Package to use Google Drive API - not installed in Colab VM by default
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth # Other necessary packages
from oauth2client.client import GoogleCredentials
auth.authenticate_user() # Follow prompt in the authorization process
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
your_module = drive.CreateFile({"id": "your_module_file_id"}) # "your_module_file_id" is the part after "id=" in the shareable link
your_module.GetContentFile("your_module_file_name.py") # Save the .py module file to Colab VM
import your_module_file_name # Ready to import. Don't include".py" part, of course :)
Side note
Last but not least, I should credit the original contributor of this approach. That post might have some typo in the code as it triggered an error when I tried it. After more reading and troubleshooting my code snippets above worked (as of today on Colab VM OS: Linux 4.14.79).
回答8:
It's Jun 2019.
Make sure in the Python package's __init__.py
all related files are imported in order. Push the code to Git or use this code.
for e.g,
from .Boxes import *
from .Circles import *
from .Rectangles import *
...
Don't use Package name in __init__.py
file for importing the files.
in Google colab,
! rm -rf SorghumHeadDetection
! git clone https://github.com/user/amazing-repo-name/
来源:https://stackoverflow.com/questions/48905127/importing-py-files-in-google-colab