🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

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

Q&A

解決済

2回答

923閲覧

ファイル(.py)をimportする方法。エラーが出て困ってます(おそらくパスが原因です。)

kane_study

総合スコア4

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python

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

0グッド

0クリップ

投稿2020/12/05 09:38

前提・実現したいこと

ファイルの構造
master
|—data
|—models
| |—Alex.py

|—src
| |—create_as.py

ここに質問の内容を詳しく書いてください。

他のファイルをimportしたいです。

create_as.pyを実行したいのですが
create_as.pyでは、Alex.pyの中にあるクラス「Alex()」を利用する為に
Alex.pyをimportする必要があります。

■■な機能を実装中に以下のエラーメッセージが発生しました。

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

エラーメッセージ ```No module named 'models' ### 該当のソースコード ```ここに言語名を入力 ソースコード

//コードの一部(create_as.pyの中身)
import sys
sys.path.append('/Users/ユーザー名/Downloads/master/models/')
from models import Alex

//↑import部分

試したこと

「create_as.py」をmasterの中に入れ、
「from models import Alex」を「import models.Alex」に変え、実行した所、この部分のエラーが取れたので、パスの問題だと思います。

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

python 3.

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

python

1from Alex import Alex

で、どうでしょうか?

投稿2020/12/05 10:13

jbpb0

総合スコア7653

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

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

kane_study

2020/12/05 11:06

こんばんは。回答ありがとうございます。 バグが取れました。 しかし、理屈の部分(何故、解決出来たのか)が納得ができていないのですが、 質問させて頂いてもよろしいでしょうか?
jbpb0

2020/12/05 13:09

'/Users/ユーザー名/Downloads/master/models/' をモジュール検索パスに追加したのだから、「models」フォルダにあるものは見つかりますので、読み込みたいファイル名から書けばいいのです 「models」はimportやfromに書く必要はありません Alex.py が create_as.py と同じ src フォルダにあるとしてください create_as.py から Alex.py をimportするときに、どう書きますか? src から書きます? 書きませんよね from Alex import Alex とか、 import Alex とかって書きますよね それと同じです
jbpb0

2020/12/05 13:18

あるいは、これでも大丈夫なはず import sys sys.path.append('/Users/ユーザー名/Downloads/master/') from models import Alex
ppaul

2020/12/05 13:44

sys.path.append('/Users/ユーザー名/Downloads/master/') from models import Alex ではimportできないはずです。 #「create_as.py」をmasterの中に入れ、 #「from models import Alex」を「import models.Alex」に変え、 というのもできないはずなのですが、これでimportできましたか?
jbpb0

2020/12/05 14:31 編集

当方のWindows10のPythonでは、 C:\Users*****\Downloads\master\models に Alex.py があるときに、下記が書かれてるファイルを Pythonで実行できます Alex.py 内の関数も使えます import sys sys.path.append('C:/Users/*****/Downloads/master/') from models import Alex print(dir(Alex))
jbpb0

2020/12/05 14:28

C:\Users*****\Downloads\master\models に Alex.py があるときに、下記が書かれてるファイルを C:\Users*****\Downloads\master に置いて、Pythonで実行できます import models.Alex print(dir(models.Alex)) Alex.py 内の関数は、models.Alex.関数名 とすれば使えます
ppaul

2020/12/07 07:22

もしかして、modelsの下に__init__.pyを作成してありますか。これがある場合には、おっしゃるようにimportできます。 __init__.pyがないのにimport models.Alexが問題なく実行できるとすると、非常に不思議です。 お時間があれば、以下を実行して結果を教えてください。 import sys sys.modules['models'].__file__
jbpb0

2020/12/07 09:19 編集

__init__.py はありません master フォルダには models フォルダがあるだけです (下記「テスト3」を除く) models フォルダには Alex.py と __pycache__ フォルダがあるだけです (__pycache__は、削除してもAlex.py内の関数を実行したら、勝手にできます) Alex.py の内容は、下記の通り import numpy as np import math def 関数名(引数,,,): (関数の定義) if __name__ == '__main__': (関数のテスト用のコード) [テスト1] 全く別のフォルダに test.py を作って、テストします test.py の内容は、下記の通り import sys sys.path.append('C:/Users/*****/Downloads/master/') from models import Alex (Alex.py内の関数を実行して、結果を表示するコード) import sys print(sys.modules['models'].__file__) [テスト1結果] python test.py (Alex.py内の関数を実行した結果が表示される) None [テスト2] 全く別のフォルダに test.py を作って、テストします test.py の内容は、下記の通り import sys sys.path.append(r'C:/Users/*****/Downloads/master/models/') import Alex (Alex.py内の関数を実行して、結果を表示するコード) import sys print(sys.modules['models'].__file__) [テスト2結果] python test.py (Alex.py内の関数を実行した結果が表示される) Traceback (most recent call last): File "test.py", line 26, in <module> print(sys.modules['models'].__file__) KeyError: 'models' [テスト3] master フォルダに test.py を作って、テストします test.py の内容は、下記の通り import models.Alex (Alex.py内の関数を実行して、結果を表示するコード) import sys print(sys.modules['models'].__file__) [テスト3結果] (Anaconda Promptのカレントフォルダはmasterフォルダ) python test.py (Alex.py内の関数を実行した結果が表示される) None
jbpb0

2020/12/07 09:23

[テスト4] ファイルは[テスト3]と全く同じ [テスト4結果] (Anaconda Promptのカレントフォルダは全く別のフォルダ) python C:\Users*****\Downloads\master\test.py (Alex.py内の関数を実行した結果が表示される) None
ppaul

2020/12/07 09:47

ありがとうございます。再現しました。 テストでどこか間違えていたようです。
kane_study

2020/12/11 04:42

無事に解決できました。 ありがとうございます。
kane_study

2020/12/13 10:35

テストの方も再現できました。 ありがとうございます。
guest

0

ライブラリ検索パスを設定してあるので、普通にimport してください。

python

1import sys 2sys.path.append('/Users/ユーザー名/Downloads/master/models/') 3import Alex

投稿2020/12/05 11:09

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問