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

Probleme bei der Installation?
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Versionen weiß ich nicht, aber es ist hier https://github.com/timothycrosley/pies/ ... p/setup.py erfolgreich in Verwendung…
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Frag halt Donald.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hä ?!?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Donald Stufft, einen der Hauptentwickler von Pip -- der weiß sicher was geht und was nicht geht.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Was ist jetzt der Unterschied zu davor?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Ja schon, aber davor hattest du ja ne langer "OR"-Liste die du jetzt nur verkürzt hast, oder hab ich was übersehen?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten