Python 3.5 est en phase beta, et c’est une release très (mais alors très très très) attendue.
Si vous ne voulez pas attendre et tester le bouzin de suite, il est facile de setup la bestiole sous linux :
- Installer un compilateur et les headers de Python;
- Télécharger les sources;
- Décompresser tout ça;
- Compiler;
- Installer.
Un exemple possible :
cd /tmp sudo apt-get install python-dev gcc # ou yum install python-devel gcc wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0b3.tgz tar -xvf Python-3.5.0b3.tgz cd Python-3.5.0b3 ./configure make sudo make altinstall |
Ne faites surtout PAS sudo make install
, qui écraserait votre python principal.
Ensuite on lance :
$ python3.5 $ python3.5 Python 3.5.0b3 (default, Jul 5 2015, 23:52:07) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information. Traceback (most recent call last): File "/home/sam/Scripts/pythonstartup.py", line 119, in store = Store(os.path.join(TEMP_DIR, 'store.%s.db') % python_version) File "/home/sam/Scripts/pythonstartup.py", line 93, in __init__ object.__setattr__(self, 'DICT', shelve.DbfilenameShelf(filename)) File "/usr/local/lib/python3.5/shelve.py", line 227, in __init__ Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback) File "/usr/local/lib/python3.5/dbm/__init__.py", line 91, in open "available".format(result)) dbm.error: db type is dbm.gnu, but the module is not available >>> import types >>> print(':)') :) >>> |
En dehors du vomi d’intro, tout marche chez moi.
Attendu pour quelle raisons ?
Le type hinting enthousiasme les entreprises, le async intéresse les personnes qui attendaient beaucoup de asyncio et ont trouvé ça trop compliqué (et du coup on fait du nodejs ou go), le % pour les bytes retire une grosse épine du pied des devs réseaux et web, alors que le @ fait la joie de la communauté scientifique. C’est un peu la release coup de coeur pour le coup.
La 3.4 m’a fait dire que python 3 était enfin près à remplacer la 2 pour les nouveaux projets.
La 3.5 me fait penser que les gens vont enfin avoir une bonne raison de migrer leurs vieux projets vers la 3.
“type hinting”
Autant utiliser un langage à typage statique…Ca va être le bordel visuellement.
“asyncio”
J’ai pas les mêmes perfs (en moins bien) que lorsque j’utilise du multithread…
Utiliser asyncio quand 90 % des modules ne sont pas prévus pour, ça gâche un peu.
Sérieusement, je me retire lentement du monde Python, pour embrasser celui des langages compilés( C, Golang, Rust)…Même si on a pas la même expressivité, ni la même puissance objet, on s’y retrouve pas mal en performance et en facilité de déploiement. Car il faut l’avouer, le déploiement d’appli Python, c’est la misère : une tripotée de dépendances, 12 produits différents pour packager, 12 how to différents pour packager…Moi ça m’a sappé le moral les changements de versions de Python, j’ai des anciens OS avec du python 2, des nouveaux avec du Python 3…ça commence à être le bordel à rationaliser tout cela !
“La 3.5 me fait penser que les gens vont enfin avoir une bonne raison de migrer leurs vieux projets vers la 3.”
Ils auront surtout une bonne excuse pour changer de langage.
Les changements majeurs de langage tuent le langage : Perl, PHP…
C’est cool, espérons que ça va en motiver certains à sortir un meteor version python histoire de s’amuser plus facilement.
En parlant de type hinting, un post cool en rapport sur IE :
http://indexerror.net/2024/utilit%C3%A9-des-types-slice-et-hints?show=2032#a2032
Ps : qqn peut m’expliquer comment marche ces put… de balises : a href=”” title=”” ?
configure –prefix=/usr/local/ devrait permettre le make install je pense
@boblinux : c’est la merde.
@gentilnazi C’est justement un virage délicat, et Python s’en sort plutôt bien.
Je dirais même que c’est le seul qui s’en soit sorti. Perl n’est plus beaucoup utilisé, PHP 6 a été supprimé et ils ont sauté cash à PHP7, mais Python 3 gagne encore et toujours en adoption. C’était galère, mais le langage a été modernisé pour survivre à la prochaine décénie.
Moi, ce que je trouve super intéressant, c’est la PEP 448 qui permettra de faire entre autres des trucs comme:
>>> print(*[1, 2, 3], *[4, 5, 6], 7)
1 2 3 4 5 6 7
Je suis toujours frustré de ne pas pouvoir le faire dans certains cas (et c’est bien plus lisible que d’utiliser chainmap).
Ouai, c’est génial. Depuis le temps que ça me gave de pas pouvoir faire {} + {}, ben on va enfin pouvoir faire {**{}, **{}}.
Pour installer proprement Python, il faut les paquets suivants :
build-essential
tk8.4-dev
libsqlite3-dev
libgdbm-dev
libreadline6-dev
liblzma-dev
libbz2-dev
libncurses5-dev
libssl-dev
Ensuite, ça devrait être beaucoup mieux !
Ouai ça permet d’utiliser les modules tkinter, sqlite3, gbm, lzma, bz2, readline, ncurse et ssl. Mais si vous voulez juste essayer les nouveautés, c’est pas indispensables.
@lafontaine: je suis très très curieux de voir ton benchmark : pas que ce soit impossible, au contraire, par contre, avec une bonne architecture, il y a de quoi faire ;-)
BTW, essayer d’opposer thread / async et peut être multi process montre que tu n’as pas encore assez joué avec tous ces patterns pour te rendre compte qu’ils ne sont pas antinomiques, mais complémentaires: rien ne t’interdit d’utiliser les 3 dans le même daemon, c’est ce que j’ai fait avec API-Hour http://www.api-hour.io les 3 patterns sont présents, à différents niveaux, histoire d’essayer de tirer le meilleur du CPU et de l’I/O: ce n’est clairement pas une silver bullet, ça peut néanmoins aider quand on l’utilise à bon usage.
Après, si tu préfères jeter toute ta connaissance Python pour écrire de la business logic (je ne sais pas dans quoi tu travailles, mais moi, c’est pour ça que mes clients me paient, ils s’en foutent de ce que j’utilise en dessous) pour faire du go ou du rust, c’est ton choix, mais tu ne nous fera pas croire que c’est plus facile de tout jeter que passer à Python 3 ;-) à moins bien sûr d’aimer avoir mal, ce qui n’est pas une approche très production-ready de mon point de vue :-)
Je suis vraiment très curieux de voir des projets que tu as fait en go ou rust, tu aurais une lien pour nous montrer tes oeuvres?
Pour installer Python 3.5 proprement sans remplacer le python système :
$ sudo make altinstall