Développement en Python sur PC Copilot +

Une évolution majeure des ordinateurs sous Windows a été lancé à la mi-juin 2024. Désormais, des processeurs à architecture ARM sont proposer en lieu et place des CPU x86-64. Il ne fait pas de doute que dans les lois à venir les solutions de développement seront parfaitement adaptées à la nouvelle architecture. En attendant, comment continuer à développer sur ce type de machine ? Il existe déjà quelques solutions pour nous aider.

Installation de Python

Python est disponible en version Arm64 sur la page https://www.python.org/downloads/windows/.

PS C:\Users\gilles> cd .\Downloads\
PS C:\Users\gilles\Downloads> curl https://www.python.org/ftp/python/3.12.4/python-3.12.4-arm64.exe -O python-3.12.4-arm64.exe
PS C:\Users\gilles\Downloads> .\python-3.12.4-arm64.exe

Une fenêtre va apparaître. Nous cliquons sur la case à cocher python.exe to PATH. Nous lançons l’installation en cliquant sur Install Now. Notons que le chemin d’installation est précisé.

Même si nous avons installer Python, il se peux que dans le terminal nous soyons systématiquement redirigés vers Microsoft Store lorsque que nous tentons d’exécuter la commande python.exe ou python3.exe. La solution consiste à ouvrir les paramètres de Windows. Nous cliquons sur  Alias d’exécution d’application dans les paramètres d’applications (Applications > Applications et fonctionnalités). Nous faisons défiler la page pour afficher et décocher les entrées pour « App Installer – python.exe » et « App Installer – python3.exe ».

Si nous avons omis de cliquer sur Add python.exe to PATH, nous pouvons toujours ajouter le chemin dans les variables d’environnements.

Dans les paramètres, nous allons saisir dans la boîte de recherche le mot variables et cliquez sur Modifier les variables d'environnement système.

Rechercher les variables d'environnement
développement copilot windows python .net

Une boîte de dialogue va s’afficher. Nous cliquons sur le bouton Variables d'environnement...

Propriétés système
développement copilot windows python .net

Dans les variables pour l’utilisateur en cours, nous cliquons sur la ligne Path puis sur le bouton Modifier...

Variables d'environnement
développement copilot windows python .net

Nous ajoutons une nouvelle ligne en y intégrant le chemin où se situe l’installation de Python. Dans notre cas il s’agit de C:\Users\gille\AppData\Local\Programs\Python\Python312-arm64.

Modification de variable d'environnement
développement copilot windows python .net

Nous fermons tous les boites de dialogue, et nous pouvons essayer de lancer l’interpréteur Python.

Dans Powershell nous devons autoriser l’exécution de scripts avec cette ligne de commandes.

PS C:\Users\gille\OneDrive\Documents\Python> Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

Packages Arm64

Nous commençons par mettre en place un environnement virtuel. Nous l’activons ensuite et nous mettons à jour la commande pip.

PS C:\Users\gilles\OneDrive\Documents\Python> python -m venv myenv
PS C:\Users\gilles\OneDrive\Documents\Python> .\myenv\Scripts\Activate.ps1
(myenv) PS C:\Users\gilles\OneDrive\Documents\Python> python.exe -m pip install --upgrade pip

Nous créons un fichier Python que nous appellerons main.py.

import platform

print("Système : ", platform.uname().system, platform.uname().release, platform.uname().machine)
print("Processeur : " , platform.uname().processor)

Nous essayons notre script de cette façon.

(.venv) PS C:\Users\gille\OneDrive\Documents\Python> python .\essai.py
Système :  Windows 11 ARM64
Processeur :  ARMv8 (64-bit) Family 8 Model 1 Revision 201, Qualcomm Technologies Inc

Certaines bibliothèques Python utilisent du code natif. Des versions spécifiques à Windows Arm64 ne sont pas forcément disponibles au lancement des ordinateurs Copilot +. Pour contourner cette difficulté il existe sur Github un ensemble de packages au format wheel compilés en code Arm64. Nous pouvons télécharger directement l’archive à l’adresse https://github.com/cgohlke/win_arm64-wheels/releases et la décompresser.

Nous pouvons également le faire directement en ligne de commandes.

PS C:\Users\gille\Downloads> curl https://github.com/cgohlke/win_arm64-wheels/releases/download/v2024.6.15/2024.6.15-experimental-cp312-win_arm64.whl.zip -O wheels.zip
PS C:\Users\gille\Downloads> Expand-Archive -Path .\wheels.zip -DestinationPath .\

A l’intérieur du répertoire nous trouverons un fichier wheel pour chaque package. Pour les installer dans l’environnement virtuel, il nous suffit d’utiliser la commande pip install <fichier wheel>.

Certains packages imposent l’installation d’autres packages. Si tous les packages tiers sont en pure Python, nous n’aurons pas de soucis. Par contre avec des packages intégrants du code natif nous allons devoir pré-installer les packages tiers. C’est le cas par exemple de Pandas. Pour rendre son installation possible, nous devons d’abord installer Numpy.

(.venv) > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\numpy-2.0.0-cp312-cp312-win_arm64.whl"
(.venv) > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\pandas-2.2.2-cp312-cp312-win_arm64.whl"

Jupyter Notebook

Pour utiliser la librairie Pandas, le mieux est d’installer Jupyter Notebook et JupyterLab. Là aussi nous allons devoir pré-installer un certain nombre de packages.

(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\pywinpty-2.0.13-cp312-none-win_arm64.whl"
(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\cffi-1.16.0-cp312-cp312-win_arm64.whl"
(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\argon2_cffi_bindings-21.2.0-cp312-abi3-win_arm64.whl"
(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\rpds_py-0.18.1-cp312-none-win_arm64.whl"
(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\psutil-5.9.8-cp312-abi3-win_arm64.whl"
(.venv) > pip install jupyter

Pour tester tout cela, nous exécutons la ligne de commandes qui suit :

(.venv) PS > jupyter notebook

Nous allons créer un classeur. Par exemple nous définissons un programme pour récupérer l’historique du taux de change entre l’euro et le dollar US.

En préalable nous devons installer le package yfinance. Cette bibliothèque va nous permettre de récupérer les données du marché financier en utilisant Yahoo ! Finance (https://tysonvanalfen.com/python/packages/yfinance.html).

(.venv) PS > pip install yfinance --upgrade --no-cache-dir

Nous allons récupérer un historique des taux de change. Dans notre cas nous le ferons sur une année avec period="1y". L’historique est un objet dataframe de Pandas. Pour rendre les choses plus claires, nous convertissons l’index au format date et heure. Cela va nous faciliter la manipulation des données.

import pandas as pd
import yfinance as yf

EUR2USD = yf.Ticker("EURUSD=X" )
df_euro_usd = EUR2USD.history(period="1y")
df_euro_usd.index = pd.to_datetime(df_euro_usd.index)

df_euro_usd.head()

Nous allons maintenant afficher cette évolution sous forme de graphique. Pour cela nous devons installer Matplotlib les packages suivants :

(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\contourpy-1.2.1-cp312-cp312-win_arm64.whl"
(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\kiwisolver-1.4.5-cp312-cp312-win_arm64.whl"
(.venv) PS > pip install "C:\Users\gille\Downloads\2024.6.15-experimental-cp312-win_arm64.whl\matplotlib-3.9.0-cp312-cp312-win_arm64.whl"

Nous allons maintenant dessiner une courbe de l’évolution du taux de change sur 1 an. Nous y ajouterons sous forme de ligne la moyenne. Nous utiliserons les taux de change en clôture.

import matplotlib.pyplot as plt

plt.style.use('ggplot')
%matplotlib inline

# Création du graphisme
plt.figure(figsize=(15, 7))

# Ajout de l'évolution du taux de change
df_euro_usd['Close'].plot()

# Ajoute une ligne pour la moyenne
plt.axhline(y=np.nanmean(df_euro_usd['Close']), color='green')

# Définition et paramétrage du titre et des axes
plt.title('Evolution EUR/USD', fontsize=16)
plt.xlabel('Année-Mois', fontsize=15)
plt.ylabel('Taux de change', fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)

# Affichage
plt.show()
Exemple de courbe pandas matplotlib développement copilot windows python .net

Utilisation d’un éditeur de code

Par défaut, Python est fourni avec l’éditeur de code Idle. Nous pouvons le lancer dans le menu Démarrer.

Une autre approche consiste à exécuter une ligne de commandes sous cette forme.

PS C:\Users\gilles> pythonw.exe "C:\Users\gilles\AppData\Local\Programs\Python\Python312-arm64\Lib\idlelib\idle.pyw"

Cette façon de procéder peut paraître un peu pénible à l’usage. Le mieux est d’utiliser un alias. Nous invoquerons l’instruction Set-Alias pour définir un raccourci.

PS C:\Users\gilles> function myalias {pythonw.exe "C:\Users\gille\AppData\Local\Programs\Python\Python312-arm64\Lib\idlelib\idle.pyw"}
PS C:\Users\gilles> Set-Alias -Name idle -Value myalias
PS C:\Users\gilles> idle

Pour définir cet alias de manière permanente, nous pouvons éditer le fichier utiliser par Powershell lors de l’ouverture d’une nouvelle session. Ce fichier s’appelle Microsoft.PowerShell_profile.ps1. Nous le trouverons en affichant le contenu de la variable d’environnement $PROFILE. Nous obtiendrons un chemin vers un fichier de configuration pour l’utilisateur local.

PS C:\Users\gilles> $PROFILE
C:\Users\gille\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Pour obtenir un chemin d’accès à un fichier de profile générale nous utiliserons :

PS C:\Users\gilles> $PROFILE.AllUsersAllHosts
C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1

Pour ajouter l’alias nous allons éditer le fichier.

PS C:\Users\gilles> notepad.exe $PROFILE

A l’intérieur du fichier, nous ajoutons les lignes suivantes et nous le sauvons.

function myalias {
	pythonw.exe "C:\Users\gilles\AppData\Local\Programs\Python\Python312-arm64\Lib\idlelib\idle.pyw"
}
Set-Alias -Name idle -Value myalias

Pour que le profile soit actif, nous démarrons une nouvelle session de Powershell. Nous tapons idle pour lancer l’éditeur.

A juillet 2024 nous avons également à notre disposition deux éditeurs de code proposés en version native ARM64 : Jetbrains PyCharm Community Edition et Visual Studio Code.

A noter que Visual Studio 2022 existe en version ARM64. Le python n’est pour l’instant pas pris en charge.

Leave a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *