簡體   English   中英

python site-packages中的某些包不會顯示

[英]Some packages in python site-packages are not displayed

Python包列表

這些是我的機器中顯示的包列表。 當我嘗試使用以下python命令獲取包含其版本的軟件包時,我只能看到軟件包jinja,jsonschema,markupsafe和matplotlib,並且缺少軟件包“isapi”

>>> import pip
>>> ["%s==%s" % (i.key, i.version) for i in pip.utils.pkg_resources.working_set]

結果/輸出:

['jinja2==2.7.3', 'jsonschema==2.5.1', 'markupsafe==0.23', 'matplotlib==1.4.3']

我的要求是在列表中也得到( “isapi” )。 有沒有可用的選擇? 請在此提供您的建議。

提前致謝 :)

isapi 不是PyPI包 ,也沒有用pip安裝。 您可以看到這一點,因為沒有帶有.dist-info后綴的包名稱的文件夾。

.dist-info文件夾1由pip創建,作為安裝過程的一部分,用於存儲有關PyPI包的元信息。 它們基本上包含有關包的所有信息,您也可以在PyPI網站上找到它們。 在這些文件夾旁邊,pip將為實際包添加一個包含真實包模塊的實際包2

由於你的isapi文件夾顯然不是來自PyPI包,它來自另一個來源。 例如,這可以是一個外部設置實用程序,只需在其中安裝該文件夾即可。 也可能是一個不同的PyPI包將文件夾作為依賴項安裝(雖然不是你的包的情況)。 我建議查看文件夾和Python模塊,以了解它的作用以及它可能來自何處。

無論如何,因為它沒有安裝pip,pip顯然不知道它。 因此它不會出現在包列表中。

不幸的是,沒有其他好方法可以通過編程方式找到該模塊。 一種可能的方法是簡單地獲取site-packages文件夾的目錄列表並以這種方式處理模塊。 您還可以使用pkgutil模塊獲取所有模塊(包括內置模塊)的列表,並過濾那些在site-packages文件夾中的模塊。 但除此之外,沒有其他“注冊”或其他東西可以跟蹤該文件夾中的內容。 如果你考慮一下,就不可能有一個,因為你總是可以自己放一個新的文件夾。


腳注

1 .dist-info文件夾是用PEP 376發明的,用於統一管理分發的方式。

2 Python包不需要像PyPI包一樣拼寫。 這允許在PyPI包的名稱中使用自定義大小寫(因為Python包應該是小寫的),甚至是不同的名稱。 例如,Beautiful Soup 4的PyPI包名稱是beautifulsoup4 ,但Python包名稱為bs4

試試這個:

import pkgutil
[p[1] for p in pkgutil.iter_modules()]

應該為您提供所有已安裝軟件包的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM