2015-11-02 53 views
8

我有一個文件,我懷疑是由pip安裝的。 我怎樣才能找到哪個軟件包安裝該文件? 換句話說,我正在尋找類似pacman -Qo filename的命令,但對於點。它存在嗎?或者我應該使用一些pip + grep的組合? 在這種情況下,我不知道如何列出所有安裝的文件。如何找到哪個pip包擁有一個文件?

+1

你對「文件」有什麼意思?一個模塊?一套? – poke

+0

@poke在我的高清中,我有一個.py文件,我想知道是否在幾年前安裝了一個將該文件複製到我的計算機中的軟件包。 (實際上該文件是'/ usr/bin/rst2html.py'),但我的問題是如何做到這一點。 – DdD

回答

3

您可以用

pip list | cut -d" " -f1 | xargs pip show -f 

試圖再通過結果尋找一個文件搜索。

+0

爲什麼不在你的答案中加一個'grep',這不是一個完整的解決方案嗎? –

+0

謝謝,它幾乎可行。但是,對於大多數的軟件包,我得到了'Files: 找不到installed-files.txt'這是我係統的問題嗎? – DdD

+1

@KraZmAzzD:我認爲'pip list'包含了不是由'pip'本身安裝的軟件包,而是由您的系統軟件包管理器來安裝的軟件包。這些通常不會包含'installed-files.txt'文件。 –

0

試試這個吧!

find_pkg_by_filename(){ for pkg in $(pip list | cut -d" " -f1) ; do if pip show -f "$pkg" | grep "$1" ; then echo "=== Above files found in package $pkg ===" ; fi ; done ; } 

find_pkg_by_filename somefilename 

請注意,如果您添加-qgrep,將盡快退出,因爲是一個匹配,然後點子會抱怨管道破裂。