Я хочу использовать Gtk3 в Python3 на NixOS. Эта команда
nix-shell -p gobject-introspection gtk3 'python3.withPackages(ps : with ps; [ pygobject3 ])'
позволяет
import gi
в среде python3 внутри nix-оболочки. Вот как я пытаюсь определить Gtk для Python3 в файле Configuration.nix.
environment.systemPackages = with pkgs; [
gtk3
python3
python3Packages.pygobject3
python3Packages.pip
];
Команда sudo nixos-rebuild switch не показывает никаких ошибок, но import gi в среде python3 приводит к следующему:
ModuleNotFoundError: No module named 'gi'
Что мне нужно изменить?
Это новая установка NixO с Cinnamon DE, Python 3.11.8, Gtk 3.24.
@CharlesDuffy Хорошо, но я получу тот же результат, если перенесу модули Python в пользовательские пакеты.
Почему вы не используете python3.withPackages в каждом случае? Таким образом, вы получаете уверенность в содержимом вашего PYTHONPATH.
@CharlesDuffy Потому что я новичок в NixOS и не знал, что это имеет значение. Спасибо, это был ключ, который указал мне на решение моей проблемы.






Вот как я изменил свой файл Configuration.nix благодаря комментарию @CharlesDuffy.
users.users.reb = {
isNormalUser = true;
description = "RB";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
firefox
libreoffice-fresh
vlc
gtk3
(python3.withPackages (subpkgs: with subpkgs; [
pip
pygobject3
]))
# thunderbird
];
};
выглядит очень косо при попытке поместить модули Python в systemPackages