How to import a class/function in google Colab from a .py file on google drive

问题描述 投票:0回答:1

我正在尝试从存储在我的谷歌驱动器中的 .py 文件导入一个类。

最初,我已经安装了谷歌驱动器如下:

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

然后使用以下方法导航到目标文件夹:

%cd "/content/drive/MyDrive/Autonomous_Driving/GRTP/clstm_lifelong/us1011/sgan-nsl"
!ls

它显示如下输出:

/content/drive/MyDrive/Autonomous_Driving/GRTP/clstm_lifelong/us1011/sgan-nsl
checkpoint.pkl        __pycache__           utils_wcgan_decompose.py
loss.mat          trained_models
model_wcgan_decompose.py  train_wcgan_decompose.py

现在在那个驱动器的

model_wcgan_decompose.py
文件中有一些名为
highwayNet_d
highwayNet_g_compose
highwayNet
的类。现在我正在尝试使用以下方法导入该类:

from model_wcgan_decompose import highwayNet_d

但它显示如下错误:

ImportError                               Traceback (most recent call last)
<ipython-input-26-256c2191a0a5> in <cell line: 9>()
      7 #import model_wcgan_decompose
      8 
----> 9 from model_wcgan_decompose import highwayNet_d
     10 
     11 

ImportError: cannot import name 'highwayNet_d' from 'model_wcgan_decompose' (/content/drive/MyDrive/Autonomous_Driving/GRTP/clstm_lifelong/us1011/sgan-nsl/model_wcgan_decompose.py)

请建议我该如何解决?

python google-drive-api google-colaboratory
1个回答
0
投票

我们可以用

some_file
打开
codecs
的代码,使用
json
load
它,并使它成为
str
ing所以我们可以执行
some_code_in_string
;重要的部分是我们将其
'execution_count'
ionary 中的
dict
None
更改为
1
(或者我们希望它对代码进行
exec
ute 的次数)。

所以在这里

'SomeClass.ipynb'
我有以下代码:

class SomeClass:
    def __init__(self):
        print(f'init {self.__class__.__name__}')
        self.foo = 0
SomeClass()

在另一个文件中,我们可以运行:

import codecs
import json

some_file =  codecs.open('/content/drive/My Drive/Colab Notebooks/SomeClass.ipynb', 'r')
some_file = some_file.read()
some_file = json.loads(some_file)
some_file['cells'][0]['execution_count'] = 1
some_code_in_string = ''
for code_in_file in some_file['cells']:
    for _code_in_file in code_in_file['source']:
        some_code_in_string += _code_in_file
        some_code_in_string += '\n'
exec(some_code_in_string)

输出:

init SomeClass
© www.soinside.com 2019 - 2024. All rights reserved.