2017-10-16 26 views
5

我想解決兩個python安裝之間的行爲差​​異,這些安裝通常是確定性的並且安裝了相同的python pip軟件包。可以列出它的二進制輪子嗎?

我懷疑是不同的.so文件。是否有爲什麼要查看哪些二進制二進制輪子點已安裝以及哪些體系結構?

更新 -

% pip show Name: scipy Version: 1.0.0rc1 Summary: SciPy: Scientific Library for Python Home-page: https://www.scipy.org Author: SciPy Developers Author-email: [email protected] License: BSD Location: /usr/local/lib/python2.7/dist-packages Requires: numpy

上述軟件包依賴之類的東西必須編譯libopenblas。我不確定pip是否使用了系統安裝,或者是在pip安裝期間編譯BLAS,還是用作i386或i686的BLAS的預編譯版本 - 誰知道。

上述情況下,我有:

/usr/local/lib/python2.7/dist-packages/scipy/.libs/libopenblasp-r0-39a31c03.2.18.so 

我想看到這包有差異的系統在其安裝.sos差異。

+0

使用Python代碼:使用 「畫中畫列表」 命令(趕上其輸出),然後將每個package_name放在「pip show」命令中並加上「for」,以顯示它們的信息。 – DRPK

+0

'pip list'和'pip show '是快速檢查@DRPK提到的最簡單的方法,但是如果您正在挖掘單個文件,您可以看到每個python實例的安裝位置,並打開python IDLE或從CLI然後'導入網站''site.getsitepackages()'然後返回類似'['/usr/lib64/python2.7/site-packages','/usr/lib/python2.7/ site/packages','/ usr/lib/site-python']'你可以在哪裏驗證這些文件是相同的,以防萬一發生在一個而不是其他的 – stephen

回答

4

的信息是存在的,但你必須要挖圍繞dist-info和/或egg-info子目錄找到它。

  • 二進制分發在其元數據子目錄中包含RECORD文件。
  • 源代碼發佈包括其元數據子目錄中的installed-files.txt文件。

RECORD文件是csv行(路徑,散列,大小)的記錄在PEP-376。來自雞蛋的舊版installed-files.txt只是文件名,您必須手動統計這些文件。

作爲一個簡單的例子,我有我的包copyingmock的源代碼和二進制發行版,可在PyPI上找到。隨着(pip install copyingmock)安裝二進制分發:

$ pip show --files copyingmock 
Name: copyingmock 
Version: 0.1 
Summary: A subclass of MagicMock that copies the arguments 
Home-page: https://github.com/wimglenn/copyingmock 
Author: Wim Glenn 
Author-email: [email protected] 
License: MIT 
Location: /tmp/blah/venv/lib/python3.6/site-packages 
Requires: 
Files: 
    __pycache__/copyingmock.cpython-36.pyc 
    copyingmock-0.1.dist-info/DESCRIPTION.rst 
    copyingmock-0.1.dist-info/INSTALLER 
    copyingmock-0.1.dist-info/LICENSE.txt 
    copyingmock-0.1.dist-info/METADATA 
    copyingmock-0.1.dist-info/RECORD 
    copyingmock-0.1.dist-info/WHEEL 
    copyingmock-0.1.dist-info/metadata.json 
    copyingmock-0.1.dist-info/top_level.txt 
    copyingmock.py 
$ cat venv/lib/python3.6/site-packages/copyingmock-0.1.dist-info/RECORD 
copyingmock.py,sha256=DoLAuaS7KqGT87BIlD93G1M7q9bNWgHYu1m1TZP1D1g,345 
copyingmock-0.1.dist-info/DESCRIPTION.rst,sha256=L_0CS_8XNYgAVfq3tj3GZEYg_9vML9nDP-FUU37GIbs,1541 
copyingmock-0.1.dist-info/LICENSE.txt,sha256=sDdX5cBRRpk3rmZ8hbYEfAUIYRdDqrlXmChOUkqf62o,1066 
copyingmock-0.1.dist-info/METADATA,sha256=bKJ5RXwvj0rGrg22p4K91WiJoLM5MqLHYqlpWYWUhPU,2031 
copyingmock-0.1.dist-info/RECORD,, 
copyingmock-0.1.dist-info/WHEEL,sha256=5wvfB7GvgZAbKBSE9uX9Zbi6LCL-_KgezgHblXhCRnM,113 
copyingmock-0.1.dist-info/metadata.json,sha256=SLtuqq4tUGr0A2h4hQnZEdPIm_4MrvcunLzP-_1I7Qc,677 
copyingmock-0.1.dist-info/top_level.txt,sha256=X3FsY_0npOxR5rKvOJ-b2rdiNfSiIivwVKN4JgY7cac,12 
copyingmock-0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 
__pycache__/copyingmock.cpython-36.pyc,, 

然後在強迫與源分佈(pip uninstall copyingmock然後pip install --no-binary=copyingmock copyingmock)重新安裝:

$ pip show --files copyingmock 
Name: copyingmock 
Version: 0.1 
Summary: A subclass of MagicMock that copies the arguments 
Home-page: https://github.com/wimglenn/copyingmock 
Author: Wim Glenn 
Author-email: [email protected] 
License: MIT 
Location: /tmp/blah/venv/lib/python3.6/site-packages 
Requires: 
Files: 
    __pycache__/copyingmock.cpython-36.pyc 
    copyingmock-0.1-py3.6.egg-info/PKG-INFO 
    copyingmock-0.1-py3.6.egg-info/SOURCES.txt 
    copyingmock-0.1-py3.6.egg-info/dependency_links.txt 
    copyingmock-0.1-py3.6.egg-info/top_level.txt 
    copyingmock.py 
$ cat venv/lib/python3.6/site-packages/copyingmock-0.1-py3.6.egg-info/installed-files.txt 
../copyingmock.py 
../__pycache__/copyingmock.cpython-36.pyc 
dependency_links.txt 
PKG-INFO 
top_level.txt 
SOURCES.txt 
+0

謝謝。 'pip show --files scipy | grep -e \\。so'''讓我們找到單個包中的.sos,儘管它的信息比較短,比如它編譯的是哪個體系結構等等,這可能會顯示出不同之處。我可以嘗試檢查.so文件,但是我懷疑並且在調試信息編譯的情況下渲染這個沒用。 – user48956

相關問題