Pythonのpipとimportの関係。top_level.txtとか。

#目的
***pip(インストール)やimportがグダグダになると、出端をくじかれるので、、、、***
少し、調べた。

以前に示した例を含め、install時の名称と、importの名称が違うものがある。
違っていても、別に困らないのだが、
なんか、これに、import時のエラーとかが加わると（実際に加わったのだが、、、）、
少し、整理しないと、適当な試行錯誤になるので、少し、整理。

###　　役立つかなーと思う情報（とり急ぎ）
　　　　:memo:importするときの名称は、***top_level.txt***に書かれているよう。


# install名と、import名が違う例

|install名|import名|
|:---:|:---:|
|opencv-python|cv2|
|pillow|PIL|

# pip コマンド
少し、話がずれるが、pipのコマンドの例を示す。

## pip list

```
c:\_tmp>python -m pip list
Package              Version
-------------------- --------
absl-py              0.7.1
apipkg               1.5
...
numpy                1.16.4
...
opencv-python        4.1.0.25
pandas               0.25.0
...
pickleshare          0.7.5
Pillow               6.1.0
pip                  19.2.1
...
zipp                 0.5.1

c:\_tmp>


```



## pip show

```
c:\_tmp>python -m pip show opencv-python
Name: opencv-python
Version: 4.1.0.25
Summary: Wrapper package for OpenCV python bindings.
Home-page: https://github.com/skvark/opencv-python
Author: None
Author-email: None
License: MIT
Location: c:\users\XYZZZ\appdata\local\programs\python\python37\lib\site-packages
Requires: numpy
Required-by:

```


```
c:\_tmp>python -m pip show pillow
Name: Pillow
Version: 6.1.0
Summary: Python Imaging Library (Fork)
Home-page: http://python-pillow.org
Author: Alex Clark (Fork Author)
Author-email: aclark@aclark.net
License: UNKNOWN
Location: c:\users\XYZZZ\appdata\local\programs\python\python37\lib\site-packages
Requires:
Required-by: PyScreeze, PyAutoGUI

```

importのときの名称を使うと、無視される。
***↓無視するのは、どういうこと！！！！！***
知りませんとか、なぜ、出ないのか？このあたりが、少し、
**わがまま**な感じがする。

```
c:\_tmp>python -m pip show cv2

c:\_tmp>
```


## pip install バージョン指定あり(余談）

\>や\<を使う場合は、'とかで、囲む必要がある。
ただ、このような指定をしたinstallで、いいことがあった経験は、いまのところ、
たしか、一度もない。

```
$ pip install SomePackage            # latest version
$ pip install SomePackage==1.0.4     # specific version
$ pip install 'SomePackage>=1.0.4'     # minimum version

```

## 仕様書

helpとかは、充実してない感じなので、以下の文書をみるのがいいと思う。

https://pip.pypa.io/en/stable/user_guide/


# import関連
:memo:importするときの名称は、***top_level.txt***に書かれているよう。

## 例

一言だけ入っている。

```top_level.txt
cv2
```


## 仕様書(top_level.txtについて）

以下に仕様の説明がある。
https://setuptools.readthedocs.io/en/latest/formats.html

>top_level.txt – Conflict Management Metadata
This file is a list of the top-level module or package names provided by the project, one Python identifier per line.
Subpackages are not included; a project containing both a foo.bar and a foo.baz would include only one line, foo, in its top_level.txt.
This data is used by pkg_resources at runtime to issue a warning if an egg is added to sys.path when its contained packages may have already been imported.
(It was also once used to detect conflicts with non-egg packages at installation time, but in more recent versions, setuptools installs eggs in such a way that they always override non-egg packages, thus preventing a problem from arising.)


#まとめ
わずかに、情報が増えた。
エラーに向き合いやすくなった気がする。


#関連（本人）

[Python インストール名とインポート名が違う。よくあることか？(install pillow,import PIL)](https://qiita.com/enoughspacefor/items/d1a9d5e73f6793fcc2b8)
[pythonをストレスなく使う！（generatorに詳しくなる。since1975らしい。)](https://qiita.com/enoughspacefor/items/524a76fcde2610b9da8a)
[pythonをストレスなく使う！（Pythonでは、すべてがオブジェクトとして実装されている)](https://qiita.com/enoughspacefor/items/0c6118da4c228226a65f)
[pythonをストレスなく使う！（Pylintに寄り添う)](https://qiita.com/enoughspacefor/items/df692b27bb58ca1ffa1d)
[pythonをストレスなく使う！（ExpressionとStatement)](https://qiita.com/enoughspacefor/items/1a11f553c265a2c703f2)
[英語と日本語、両方使ってPythonを丁寧に学ぶ。](https://qiita.com/enoughspacefor/items/d4b49747773e2d0285f9)

#今後
コメントなどあれば、お願いします。:candy: