Ich habe folgende Projektstruktur:Warum hängt das Verhalten von find_packages vom Import des Pip-Pakets ab?
prog
__init__.py
tests
subpak
__init__.py
__init__.py
run1.py
run2.py
run1.py:
#!/usr/bin/env python3
from setuptools import find_packages
for i in sorted(find_packages(exclude=['tests'])):
print(i)
run2.py:
#!/usr/bin/env python3
import pip
from setuptools import find_packages
for i in sorted(find_packages(exclude=['tests'])):
print(i)
Der Rest der Dateien leer sind. Umgebung - Debian-Test. Python 3.5.
run1.py Ausgang:
$ python3 run1.py
prog
run2.py Ausgang:
$ python3 run2.py
prog
tests.subpak
Das heißt, wenn find_packages
nach pip
importiert wird, ist es nicht ausgeschlossen längeren Unterpakete ausgeschlossenen Pakets. Warum passiert das und welche Mechanismen sind an diesem eigenartigen Verhalten beteiligt?
bearbeiten: Es scheint, dass Pip oder einige seiner Abhängigkeiten syspath ändern, und setuptools
Module sind unterschiedlich. Run1:
<module 'setuptools' from '/usr/lib/python3/dist-packages/setuptools/__init__.py'>
Run2:
<module 'setuptools' from '/usr/share/python-wheels/setuptools-20.10.1-py2.py3-none-any.whl/setuptools/__init__.py'>
Dumme Frage: Warum importieren Sie 'Pip' in erster Linie? –
@MartijnPieters der Code oben ist Demo des Problems, das ich beim Arbeiten mit tatsächlichen setup.py-Skript, die einige pip-Funktionen verwendet aufgetreten ist: 'von pip.req import parse_requirements' – DarkPhoenix
Welche Version von' pip' und welche Version von ' Rüstzeug? Ich kann das nicht mit 8.1.2 und setuptools 27.2.0 reproduzieren. Ich bekomme die * zweite Ausgabe * für diesen. –