2017-10-16 24 views
5

Próbuję rozwiązać problem różnicy w zachowaniu między dwiema instalacjami python, które są zwykle deterministyczne i mają zainstalowane te same pakiety pip Pythona.Czy pip pokazuje swoje podwójne koła?

Podejrzewam różne pliki .so. Czy istnieje powód, aby zobaczyć, które binaria zainstalowały binary wheels pip i dla jakich architektur?

Update -

% 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

Powyższy pakiet zależy od rzeczy takich jak libopenblas który musi zostać skompilowany. Nie jestem pewien, czy PIP używał instalacji systemu, czy skompilował BLAS podczas instalacji pipowej, czy używał jako prekompilowanej wersji BLASa dla i386 lub i686 - kto wie.

Powyższy przypadek mam:

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

Chciałbym zobaczyć, który pakiet ma różnic w ich zainstalowanych .sos w systemach różnica.

+0

użyć kodu Pythona: Użyj komendy "pip List" (złapać jego output), a następnie umieść każdą z tych nazw pakietów w komendzie "pip show" z "for", aby wyświetlić ich informacje. – DRPK

+0

'pip list' i' pip show 'to najprostszy sposób szybkiego sprawdzenia, jak wspomina @DRPK, ale jeśli szukasz szczegółowych plików, możesz zobaczyć, gdzie instalowane są pakiety witryn dla każdej instancji Pythona, otwierając python IDLE lub z CLI, następnie 'import site'' site.getsitepackages() ', który następnie zwróci coś takiego jak' ['/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/ site-packages ','/usr/lib/site-python '] 'gdzie możesz sprawdzić, czy pliki są takie same, na wypadek gdyby coś dziwnego wydarzyło się w jednym, a nie w innym – stephen

Odpowiedz

4

Informacje tam są, ale będziesz musiał kopać w podkatalogach dist-info i/lub egg-info, aby go znaleźć.

  • Dystrybucje binarne zawierają plik RECORD w ich podkatalogu metadanych.
  • Źródła dystrybucji zawierają plik installed-files.txt w ich podkatalogu metadanych.

Pliki RECORD są wierszami CSV (ścieżka, hash, rozmiar), jak udokumentowano w PEP-376. Starsza wersja installed-files.txt z jajka to tylko nazwy plików, a będziesz musiał ręcznie ustawić te pliki.

Jako prosty przykład, mam źródła i binarne dystrybucje mojego pakietu copyingmock dostępne pod numerem PyPI. Z dystrybucją binarną zainstalowany (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,, 

Następnie zmuszając do ponownej instalacji w dystrybucji źródłowej (pip uninstall copyingmock a następnie 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

Dzięki. '' 'pip show --files scipy | grep -e \\. tak '' 'pozwól mi znaleźć .sos dla pojedynczego pakietu, choć trochę krótko o informacjach takich jak architektura, dla której zostały skompilowane, itp., które mogą pokazywać różnice. Mogę spróbować sprawdzać pliki .so, ale podejrzewam, że kompilacja z informacjami debugowania z renderowaniem jest bezużyteczna. – user48956

Powiązane problemy