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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

Q&A

2回答

639閲覧

"__file__"と"__init__"の役割と正確な意味について

sequelanonymous

総合スコア123

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

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

1グッド

0クリップ

投稿2018/08/08 15:47

①"__file__" __file__のアンダースコアの意味はなにか? __file__にパスがはいるのはわかっています。 しかし,__file__を確認しようとするとエラーがでます。 なぜなんでしょうか? In [1]: from pathlib import Path In [2]: dir = Path(__file__).parent --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-5af35db63132> in <module>() ----> 1 dir = Path(__file__).parent NameError: name '__file__' is not defined In [3]: print (__file__)

flask

1import os 2from pathlib import Path 3 4dir = Path(__file__).parent.parent.parent 5... 6... 7... 8SQLALCHEMY_DATABASE_URI = "sqlite:////" + os.path.join(dir, "test.db") 9
②__init__ pythnでは、__init__ファイルをおいたフォルダはパッケージとして認識されるが、setup.pyファイルをおくことによってsetupファイル内でかいたフォルダをパッケージ化してくれるっぽいのだが、両者は同じ目的を本当に達成しているのでしょうか? もし、同じであればどちらのほうがよいのでしょうか? setupファイル from distutils.core import setup setup(name='pack', version='0.0', description='pack', classifiers=['Private :: Do Not Upload'], include_package_data=True, zip_safe=False)
LouiS0616👍を押しています

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

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

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

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

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

guest

回答2

0

いくつかの__xxxx__という形式の変数は、システム側が使う/定義するメソッドなり変数が格納されています。他に'name`がよく使われます。


pythnでは、__init__ファイルをおいたフォルダはパッケージとして認識されるが、

古い情報です。なくてもパッケージとして読み込めます。

参考:Is __init__.py not required for packages in Python 3?

setup.pyファイルをおくことによってsetupファイル内でかいたフォルダをパッケージ化してくれるっぽいのだが

これは何のことかちょっと分かりません。パッケージとして配布することを想定しているんでしょうか。

投稿2018/08/09 00:46

tachikoma

総合スコア3601

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

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

sequelanonymous

2018/08/09 05:27 編集

> これは何のことかちょっと分かりません。パッケージとして配布することを想定しているんでしょうか。 パッケージ配布は想定していません。 今触っているコードは、他のファイルをインポートする際に相対パスで指定していますが、テストコードのディレクトリのテストコードファイルで相対パス及び絶対パスをつかってインポートするとエラーがでます。 その対象法として、モジュールそのものをパッケージ化してルートディレクトリからの絶対パスを指定できるようにしました。(個人的には相対パスでインポートしたくないので。) 諸々調べたところ、__init__ファイルをおいて各ファイルをパッケージ化したらインポートできるようになるのかなと思った次第です。 そこで、そもそも、__import__の意味ってなんだろうっていうのとなんでパッケージ化してるのだろうと気になっています。
guest

0

①"file"
__file__のアンダースコアの意味はなにか?

変数名に使える文字の一つです。特別な意味はありません。

__file__にパスがはいるのはわかっています。
しかし,__file__を確認しようとするとエラーがでます。
なぜなんでしょうか?

対話型シェルではこの変数は定義されません。スクリプトから実行して下さい。

投稿2018/08/08 18:54

hichon

総合スコア5737

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

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

sequelanonymous

2018/08/09 04:00

> 対話型シェルではこの変数は定義されません なぜなのでしょうか?
namda

2018/08/09 04:10

Python3 変数予約語 で検索しましょ
sequelanonymous

2018/08/09 05:20

変数も予約語もわかっているつもりではありますが、シェルでは定義できなくてスクリプト実行だとできる理由がよく理解できていないというのと、もしかしたら意味の理解を間違えているかもしれないので再度、違う言い方でおしえていただけませんか? 質問内容自体は、このリンク先と同じだとおもいますが、定義できない理由が述べられていません。 https://ja.stackoverflow.com/questions/37608/os-chdiros-path-dirnameos-path-realpath-file-%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%81%BE%E3%81%99
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問