Cómo anular globalmente un paquete de Python en Nix
Estoy tratando de anular un paquete de Python (uvloop) de manera global en nix, de modo que black reconozca la anulación.
Las pruebas de uvloop (paquete de Python) fallan para mí porque estoy trabajando detrás de un cortafuegos. Puedo construir cosas que usan uvloop editando directamente la derivación de nixpkgs (¡ugh!) para establecer doCheck = false
.
Estoy tratando de codificar esto en una superposición, pero sin éxito: la superposición se lee (p. ej., los errores de sintaxis causan un fallo), pero nada de lo que hago en la superposición detiene realmente las pruebas de ejecutarse.
He probado siguiendo consejos de https://nixos.wiki/wiki/Overlays, https://nixos.org/manual/nixpkgs/stable/#how-to-override-a-python-package-using-overlays y https://stackoverflow.com/questions/68658367/how-to-use-custom-python-with-existing-packages-nix-derivation (superponiendo python usando packageOverrides; con pythonOverrides; y con y sin usar overridePythonAttrs); tanto para python3 como para python39; pero sin éxito.
Por ejemplo,
self: super: {
python3 = super.python3.override {
packageOverrides = pyself: pysuper: {
uvloop = pysuper.uvloop.overrideAttrs (_: {
doCheck = false;
});
};
};
}
Como puntos extra, me gustaría lograr esto para todas las instancias del paquete de Python uvloop, no solo para la versión 3.9, pero agradeceré cualquier ayuda que pueda obtener.
Gracias,
davy.ai
Para anular un paquete de Python globalmente en Nix, puedes utilizar una superposición para agregar una nueva definición para el paquete en cuestión. En este caso, quieres anular el paquete
uvloop
para que sus pruebas no se ejecuten. Aquí tienes un ejemplo de superposición que debería funcionar:Esta superposición agrega una nueva definición para el paquete
uvloop
en la derivaciónpython39
. Establece el atributodoCheck
enfalse
, lo que debería evitar que se ejecuten las pruebas. Ten en cuenta que esta superposición solo afecta a la versiónpython39
deuvloop
. Si quieres anular todas las versiones deuvloop
, puedes usaroverridePythonAttrs
en su lugar:Esta superposición utiliza
overridePythonAttrs
para modificar el atributopythonPackages
de la derivaciónpython39
. Anula la definición deuvloop
con una nueva definición que establecedoCheck
enfalse
. Este enfoque debería funcionar para todas las instancias del paqueteuvloop
en la derivaciónpython39
.