Seite 1 von 1

install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Sonntag 10. Januar 2016, 14:13
von jens
pip requirements kennt sowas:

Code: Alles auswählen

SomeProject ==5.4 ; python_version < '2.7'
http://pip-python3.readthedocs.org/en/l ... specifiers

Doch setup.py install_requires kennst sowas offensichtlich nicht.
In der setup.py was dynamisch anhand von sys.version zu machen, macht keinen Sinn, weil es ja statisch übernommen wird...

In meinem Fall geht es um das Binärpaket "scandir" was man nur für Python <3.5 braucht.
Unter Windows hat man i.d.R. die neuste Python version. Dazu kommt, das man i.d.R. keine Kompiler-Umgebung installiert hat. Von daher wäre das pauschale einfügen von "scandir" ziemlich blöd...

Was machen?!?

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Sonntag 10. Januar 2016, 16:25
von apollo13

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Sonntag 10. Januar 2016, 16:40
von jens
Ja, das wäre was... Aber ist das auch schon aktiv nutzbar oder nur ein Vorschlag?!?

Denn bei https://www.python.org/dev/peps/pep-042 ... nt-markers sieht die Syntax irgendwie anders aus.

Und in der Doku hier https://pythonhosted.org/setuptools/set ... pendencies ist das nicht erwähnt...

Nach http://stackoverflow.com/questions/2108 ... on-version zu urteilen, funktioniert es aber... Doch ab welcher Version?!?

EDIT: Hab es mal eingebaut: https://github.com/jedie/PyHardLinkBack ... 6a8c06bda0

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Sonntag 10. Januar 2016, 16:42
von apollo13
Versionen weiß ich nicht, aber es ist hier https://github.com/timothycrosley/pies/ ... p/setup.py erfolgreich in Verwendung…

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Sonntag 10. Januar 2016, 19:22
von jens
Hm... Aber das geht nicht:

Code: Alles auswählen

	extras_require={
		':python_version < "3.5"': [
			"scandir", # https://pypi.python.org/pypi/scandir
		],
	},
Führt zu:

Code: Alles auswählen

Processing /home/travis/build/jedie/PyHardLinkBackup
    Complete output from command python setup.py egg_info:
    error in PyHardLinkBackup setup command: Invalid environment marker: python_version < "3.5"
Muß ich jetzt ernsthaft, 3.0, 3.1, 3.2, 3.3, 3.4 eintragen?!?

EDIT: Habs so gemacht: https://github.com/jedie/PyHardLinkBack ... 8619bfb090

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Sonntag 10. Januar 2016, 22:02
von jens
jens hat geschrieben: Muß ich jetzt ernsthaft, 3.0, 3.1, 3.2, 3.3, 3.4 eintragen?!?

EDIT: Habs so gemacht: https://github.com/jedie/PyHardLinkBack ... 8619bfb090
Funktioniert leider so nicht...

Wird mit Py 2.4 nicht installiert:
Windows: https://ci.appveyor.com/project/jedie/p ... dka5wpak0c
Linux: https://travis-ci.org/jedie/PyHardLinkB ... /101460945

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Sonntag 10. Januar 2016, 22:04
von apollo13
Frag halt Donald.

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Montag 11. Januar 2016, 08:43
von jens
Hä ?!?

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Dienstag 12. Januar 2016, 09:53
von apollo13
Donald Stufft, einen der Hauptentwickler von Pip -- der weiß sicher was geht und was nicht geht.

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Dienstag 12. Januar 2016, 10:21
von jens
Achso...

Also es scheint jetzt zu funktionieren:

Code: Alles auswählen

    extras_require={
        ':python_version=="3.3" or python_version=="3.4"': [
            "scandir", # https://pypi.python.org/pypi/scandir
        ],
    },
https://github.com/jedie/PyHardLinkBack ... #L205-L209

Py3.4 installiert es: https://travis-ci.org/jedie/PyHardLinkB ... 16370#L181
Py3.5 installiert es nicht: https://travis-ci.org/jedie/PyHardLinkB ... 16371#L174


Aber mal ehrlich: Die Syntax ist irgendwie merkwürdig, oder?

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Dienstag 12. Januar 2016, 10:24
von apollo13
Was ist jetzt der Unterschied zu davor?

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Dienstag 12. Januar 2016, 10:37
von jens
Tja, ':python_version < "3.5"' geht halt anscheinend nicht. Ein ':python_version <= "3.4"' hab ich nicht probiert.

Ich finde auch nicht wirklich eine Dokumentation darüber...

Mir ist auch unklar, ob nun pip oder setuptools oder noch was anderes dafür zuständig ist...

Hier gibt es nix: https://pip.pypa.io/en/latest/search/?q=extra_requires
Hier geht's um extras_require: https://pythonhosted.org/setuptools/set ... ing-extras - aber nix darüber, das man "python_version" verwenden kann...

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Dienstag 12. Januar 2016, 10:39
von apollo13
Ja schon, aber davor hattest du ja ne langer "OR"-Liste die du jetzt nur verkürzt hast, oder hab ich was übersehen?

Re: install XY if sys.version<3.5 in setup.py ?!?

Verfasst: Dienstag 12. Januar 2016, 10:43
von jens
Das stimmt. Keine Ahnung... Müßte ich nochmal näher untersuchen... Aber egal, hab ja nun meine Lösung... Und Python älter als 3.3 unterstütze ich eh nicht.