Пользовательский модуль Google Colab не имеет атрибута - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь определить функцию в пользовательском модуле в Google Colab. Я создал * .py файл для определения функции. Это

/content/gdrive/My Drive/Colab/myfunc.py

Затем я создал файл * .ipynb в той же папке. Это

/content/gdrive/My Drive/Colab/test.ipynb

В myfunc.py, код

def somefunc(a)
  return a*2

В test.ipynb код

cd /content/gdrive/My\ Drive/Colab
import myfunc
myfunc.somefunc(2)

Тогда возникает ошибка "AttributeError: модуль 'myfunc' не имеет атрибута 'somefunc'"

Я также использовал

   dir(myfunc)

в test.ipynb, который показывает

['__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__']

Моя функция 'somefunc' отсутствует в атрибутах !!!

Эта проблема возникает только на Colab. Я попробовал это на своем компьютере и ноутбуках онлайн Jupyter Они оба работают правильно.

PS: Независимо от того, поместил ли я пустой файл __init__.py в одну папку или нет, проблема всегда существует.

1 Ответ

0 голосов
/ 16 марта 2019

Вероятно, вам нужно настроить sys.path.

Вот полный пример, показывающий, как создать модуль и импортировать его в Colab: https://colab.research.google.com/drive/1PtYW0hZit-B9y4PL978kV2ppJJPhjQua

Ключевая строка в этом примереЯ полагаю, что вам нужно добавить:

# Add the local_modules directory to the set of paths
# Python uses to look for imports.
import sys
sys.path.append('local_modules')

Вам нужно будет изменить путь от 'local_modules' до чего-то вроде /content/gdrive/My\ Drive/Colab.

...