質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1424閲覧

[python]別ファイルの自作モジュールをインポートしたい

saitou_san

総合スコア32

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/12/01 09:34

編集2023/12/05 02:58

実現したいこと

GoogleColabにて、別ファイルに記述した自作モジュールをインポートしたいです。
※ファイル構成は写真で添付しています
イメージ説明

発生している問題・エラーメッセージ

ImportError: cannot import name 'file2' from 'folder1.folder2' (unknown location)

>print("カレントワーキングディレクトリは[" + os.getcwd() + "]です")の結果

python

1カレントワーキングディレクトリは[/content/drive/MyDrive/study]です

<想定した通の結果でした。

該当のソースコード

file1.ipynb

python

1# 省略 2from folder1.folder2 import file2 3# 省略

file2.ipynb

python

1import numpy as np 2import torch 3import torch.nn as nn 4 5class file2(nn.Module): 6# 省略

※自作モジュールの名前はファイル名と同じにしています。

試したこと

https://kewton.blog/archives/365
を参考にして下記に示すものを試しました。
・カレントディレクトリを設定するコードを入れる

python

1import os 2# Googleドライブのマウント 3from google.colab import drive 4drive.mount('/content/drive') 5os.chdir('/content/drive/MyDrive/study') 6print("カレントワーキングディレクトリは[" + os.getcwd() + "]です") 7 8 # 省略 9from folder1.folder2 import file2 10# 省略

・拡張子を.ipynb⇒.pyに変更(ファイル名を変更しただけでした)

・ファイル名とモジュール名を別にする

どれをやってもエラー文は変わりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2023/12/01 09:50

__init__.ipynb や file2.ipynb などという様にファイルの拡張子が .ipynb となっていますが、これらは .py とするのではないでしょうか。(中身は python のコードのはずなので)
saitou_san

2023/12/01 09:54

拡張子を変えてみましたが、結果は変わりませんでした。
melian

2023/12/01 09:59

ファイルの中身はテキストファイルでしょうか? もしかして Jupyter Notebook のままになっていませんか?
TakaiY

2023/12/01 10:15

> print("カレントワーキングディレクトリは[" + os.getcwd() + "]です") のところで表示されるディレクトリは想定したものになっていますか? file2.pyの内容も提示いただけますか。 回答はここに書くのではなく、質問を編集してください。
meg_

2023/12/01 10:54

> ・拡張子を.ipynb⇒.pyに変更 単純に手入力で拡張子を変更した訳ではありませんよね?
saitou_san

2023/12/02 11:08

質問内容の修正を行いました。 拡張子の変え方は名前変更だけでした。 正しい変更方法を現在調査中です。 よろしければ教えてください。
TakaiY

2023/12/02 13:28

追記された「file2.ipynb」ファイルはipynb形式のファイルではなく通常のpythonスクリプトファイルに見えますので、そもそも拡張子は.pyとすべきでしょう。ただし、省略されちゃっているので、その後に何があるかは不明ですが。 それで読めないとすれば、ディレクトリが異なっているのだと思いますので、まずは、先の質問に答えていただけますか。
meg_

2023/12/02 14:03

ipynbファイルをJupyter Labで開いていると仮定すると、File → Save and Export Notebook As... → Executable Script で保存できます。(バージョンによっては多少表記が異なるかもしれません)
jbpb0

2023/12/04 00:13 編集

> ・拡張子を.ipynb⇒.pyに変更(ファイル名を変更しただけでした) ファイル名の拡張子を変えるだけではなく、ファイルの内容を変更する必要があります (内容が違う別ファイルを作る) > GoogleColabにて、別ファイルに記述した自作モジュールをインポートしたいです。 「*.ipynb」ファイルから「*.py」ファイルを作る方法は、google colabなら下記を参考にしてください https://qiita.com/maemae/items/3b7546b9be2493db596b の「フォルダは認識しても.pyが認識されない。」 https://qiita.com/k4zuya/items/abe2362f61d53285d219 の「手順」の「config.pyの生成」
saitou_san

2023/12/05 02:58

 ご返信が遅れて申し訳ございません。問題を解決することが出来ました。  file2.ipynbをファイル>ダウンロード>.pyをダウンロード(日本語版サイト表記)でダウンロードしたのちに、同じディレクトリにダウンロードした.pyファイルをアップロードすると無事インポートできました。.pyに変換するファイルはfile2.ipynbだけで良く、file1.ipynbや__init__.ipynbはそのままでも大丈夫でした。  今回の解決にはたくさんの方々にコメントでご支援をしてもらったので、自己解決で解決方法を投稿させていただきます。  最後に、私の拙い質問にご丁寧にご回答していただき誠にありがとうございました。
guest

回答1

0

自己解決

>実行ファイルにて、別フォルダにある.ipynb形式で書いたモジュールをimportできない。

<file2.ipynbをファイル>ダウンロード>.pyをダウンロード(日本語版サイト表記)でダウンロードしたのちに、同じディレクトリにダウンロードした.pyファイルをアップロードすると無事インポートできました。.pyに変換するファイルはfile2.ipynbだけで良く、file1.ipynbや__init__.ipynbはそのままでも大丈夫でした。

イメージ説明

投稿2023/12/05 03:00

saitou_san

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2023/12/05 04:14

ちょっと誤解があるようなので、コメントします。 0. Google Colabは jupyter notebook形式のファイルで作業を行ないます。 1. .ipynb ファイルと .py ファイルは別の形式/書式のファイルです。 .ipynbはjupyter notebookで開いていろいろな操作をするためだけのもので、pythonのプログラムファイルとして使うことはできません。 .py ファイルはpythonのプログラムを書いたものです。 pythonプログラムやjupyter nodebookでモジュールをインポートするとき、pythonファイルでなければなりません。 ipynbファイルからでも.ipynbファイルはインポートできません。 通常、ipynbファイルをpythonファイルに書き換えるには「拡張子を書き換えるだけ」ではだめです。拡張子を替えただけで「.pyに変換した」とは言えません。 2. 質問にある.ipynbという拡張子のファイルの中身はすべてpythonファイル(.py)の形式になっています。 ipynbファイルは通常テキストエディタなどで作ることはできません。 3. __init__.ipynbをpyに変更しなくてもいい理由 __init__.pyファイルは無くてもいいものだからです。 .pyに変更しなかった場合は __init__.pyが無いと判断されただけです。 なので、__init__.ipynb ファイルは無駄なファイルなので消したほうがいいです。 4. file1.ipynb ファイルは.pyに変更してはいけません。 このファイルをGoogle Colabで開くのですから、これはjupyter notebook形式である必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問