Pythonのpipとimportの関係。top_level.txtとか。
目的
pip(インストール)やimportがグダグダになると、出端をくじかれるので、、、、
少し、調べた。
以前に示した例を含め、install時の名称と、importの名称が違うものがある。
違っていても、別に困らないのだが、
なんか、これに、import時のエラーとかが加わると(実際に加わったのだが、、、)、
少し、整理しないと、適当な試行錯誤になるので、少し、整理。
役立つかなーと思う情報(とり急ぎ)
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: [email protected]
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とかは、充実してない感じなので、以下の文書をみるのがいいと思う。
import関連
importするときの名称は、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)
pythonをストレスなく使う!(generatorに詳しくなる。since1975らしい。)
pythonをストレスなく使う!(Pythonでは、すべてがオブジェクトとして実装されている)
pythonをストレスなく使う!(Pylintに寄り添う)
pythonをストレスなく使う!(ExpressionとStatement)
英語と日本語、両方使ってPythonを丁寧に学ぶ。
今後
コメントなどあれば、お願いします。
Author And Source
この問題について(Pythonのpipとimportの関係。top_level.txtとか。), 我々は、より多くの情報をここで見つけました https://qiita.com/enoughspacefor/items/9cb173dfc47e6398060d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .