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

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

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

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

Q&A

解決済

2回答

1005閲覧

pythonのパッケージについて

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

1クリップ

投稿2021/05/13 09:56

編集2021/05/15 10:52

パッケージをimportして用いるのが一般的なpythonプログラミングですが、
そのままパッケージの中の自分が利用している部分を理解できないのであればブラックボックス化してしまうためよくないと考えていたのですが、
パッケージの中身って、どれも確認が可能なものなのでしょうか?
利用している部分の確認ができるのであれば、パッケージを開いてその部分を理解する事が気軽にできるのであれば、そうすれば問題はないと思うのですが。

指摘された方法でcv2のありかを確認すると、
<module 'cv2.cv2' from '/usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so'>
と出たのですが、
local/libってどこなんでしょうか・・・。

C:\Users\名前・・・
以下ディレクトリでは、ないですよね?Usersになってるし、localでなく名前になってるし・・・。

これ本当に自分のPC内の参照なんでしょうか・・・?これが1つ目の質問です。

更に関連する事でもう1つ、

こんな感じの階層になってるんですが、これ、いらないものも入ってますが、合ってますかね、
パッケージの「中」を見て、ブラックボックス化を避けるためには、パッケージの「場所」を知るためではだめで、次は、「どの関数がどの部分にあるか」を探す必要があるんですが、
良い方法はありますかね?これが2つ目の質問です。

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

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

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

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

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

guest

回答2

0

Q.パッケージの中身って、どれも確認が可能なものなのでしょうか?

Ans.可能です。

例えばpipを用いてインストールしているパッケージやモジュールはpip showというコマンドでソースコードが保存されているフォルダ(ディレクトリとも言います)のパス(要は場所)を確認することが出来ます。

例えば、Pythonの代表的なWebフレームワークであるFlaskの中身を確認したいときは

pip show flask

とターミナルで打てば下記のような情報が表示されます。

Name: Flask Version: 1.1.2 Summary: A simple framework for building complex web applications. Home-page: https://palletsprojects.com/p/flask/ Author: Armin Ronacher Author-email: armin.ronacher@active-4.com License: BSD-3-Clause Location: /Users/ユーザー名/.pyenv/versions/3.8.2/lib/python3.8/site-packages Requires: Werkzeug, itsdangerous, Jinja2, click Required-by: Flask-SQLAlchemy, Flask-Migrate

上記のLocationLocation: /Users/ユーザー名/.pyenv/versions/3.8.2/lib/python3.8/site-packagesにFlaskがあることがわかります。

※念の為言っておくとLocationは質問者さんの環境によって異なる場所になっていると思いますのでこのままの場所を開いても見つかりません。

ちなみに、、、「上記のことがまだよく理解できない。。。」という段階ではモジュールやパッケージの中身を見るのはまだ早いかもしれません。

まずは使用するパッケージ/モジュールの公式のドキュメントや解説記事をしっかり読み込んで使い方を学ぶことに注力するのがおすすめです!

投稿2021/05/13 10:04

編集2021/05/13 10:05
digitalhimiko

総合スコア142

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

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

0

ベストアンサー

パッケージの中身って、どれも確認が可能なものなのでしょうか?

Pythonで書かれた部分は、簡単に確認が可能です。

動的リンクライブラリの形で提供されているC言語やアセンブラで書かれた部分は、別途ソースコードをダウンロードすれば確認できます。

Pythonで書かれた部分の確認は以下のように行います。

python

1>>> print(numpy) 2<module 'numpy' from 'C:\Users\myname\anaconda3\lib\site-packages\numpy\__init__.py'>

というように場所を表示して、そこを見ればPythonで書かれた部分は簡単に確認できます。

また、Pythonで書かれた関数などはinspectモジュールをimportすれば、inspect.getsource関数を使ってソースを表示することが出来ます。
少々長いですが以下のような感じです。

python

1>>> print(inspect.getsource(numpy.split)) 2@array_function_dispatch(_split_dispatcher) 3def split(ary, indices_or_sections, axis=0): 4 """ 5 Split an array into multiple sub-arrays as views into `ary`. 6 7 Parameters 8 ---------- 9 ary : ndarray 10 Array to be divided into sub-arrays. 11 indices_or_sections : int or 1-D array 12 If `indices_or_sections` is an integer, N, the array will be divided 13 into N equal arrays along `axis`. If such a split is not possible, 14 an error is raised. 15 16 If `indices_or_sections` is a 1-D array of sorted integers, the entries 17 indicate where along `axis` the array is split. For example, 18 ``[2, 3]`` would, for ``axis=0``, result in 19 20 - ary[:2] 21 - ary[2:3] 22 - ary[3:] 23 24 If an index exceeds the dimension of the array along `axis`, 25 an empty sub-array is returned correspondingly. 26 axis : int, optional 27 The axis along which to split, default is 0. 28 29 Returns 30 ------- 31 sub-arrays : list of ndarrays 32 A list of sub-arrays as views into `ary`. 33 34 Raises 35 ------ 36 ValueError 37 If `indices_or_sections` is given as an integer, but 38 a split does not result in equal division. 39 40 See Also 41 -------- 42 array_split : Split an array into multiple sub-arrays of equal or 43 near-equal size. Does not raise an exception if 44 an equal division cannot be made. 45 hsplit : Split array into multiple sub-arrays horizontally (column-wise). 46 vsplit : Split array into multiple sub-arrays vertically (row wise). 47 dsplit : Split array into multiple sub-arrays along the 3rd axis (depth). 48 concatenate : Join a sequence of arrays along an existing axis. 49 stack : Join a sequence of arrays along a new axis. 50 hstack : Stack arrays in sequence horizontally (column wise). 51 vstack : Stack arrays in sequence vertically (row wise). 52 dstack : Stack arrays in sequence depth wise (along third dimension). 53 54 Examples 55 -------- 56 >>> x = np.arange(9.0) 57 >>> np.split(x, 3) 58 [array([0., 1., 2.]), array([3., 4., 5.]), array([6., 7., 8.])] 59 60 >>> x = np.arange(8.0) 61 >>> np.split(x, [3, 5, 6, 10]) 62 [array([0., 1., 2.]), 63 array([3., 4.]), 64 array([5.]), 65 array([6., 7.]), 66 array([], dtype=float64)] 67 68 """ 69 try: 70 len(indices_or_sections) 71 except TypeError: 72 sections = indices_or_sections 73 N = ary.shape[axis] 74 if N % sections: 75 raise ValueError( 76 'array split does not result in an equal division') 77 return array_split(ary, indices_or_sections, axis)

また、上記の関数のdocstringの部分は以下を実行すれば表示することができます。

python

1print(numpy.split.__doc__) 2または 3help(numpy.split)

投稿2021/05/13 10:41

編集2021/05/13 11:17
ppaul

総合スコア24670

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

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

退会済みユーザー

退会済みユーザー

2021/05/14 02:41

質問に補足しましたお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問