Желание использовать Gtk3 с Python3 на NixOS

Я хочу использовать 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.

выглядит очень косо при попытке поместить модули Python в systemPackages

Charles Duffy 17.04.2024 19:02

@CharlesDuffy Хорошо, но я получу тот же результат, если перенесу модули Python в пользовательские пакеты.

rebelxt 17.04.2024 19:45

Почему вы не используете python3.withPackages в каждом случае? Таким образом, вы получаете уверенность в содержимом вашего PYTHONPATH.

Charles Duffy 17.04.2024 20:14

@CharlesDuffy Потому что я новичок в NixOS и не знал, что это имеет значение. Спасибо, это был ключ, который указал мне на решение моей проблемы.

rebelxt 17.04.2024 22:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот как я изменил свой файл 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
    ];
  };

Другие вопросы по теме

Похожие вопросы

Получение сообщения «Система не может найти указанный файл» при преобразовании MIDI в mp3 с использованием Mido и pydub
Как эффективно рассчитать корреляцию Пирсона между соответствующими столбцами двух двумерных массивов?
Изменение порядка dict с индивидуальным порядком
Очень странно: другой вывод tzlocal.get_localzone() на основе псевдонимов Python3?
Как я могу заставить драматурга ждать, пока не появится определенный файл cookie (а затем вернуть его) в Python?
CS50 Python Week3, заданный вопрос «Устарело» — как отклонить ввод вместо повторного запроса
Использование списка списков индексов для разрезания столбцов и получения длины вектора по строкам
Объедините триггер Blob, ввод и вывод в 1 функцию Azure v2 (Python)
Найдите минимальную и максимально возможную сумму для заданного числа из целочисленного массива
Предоставление шестнадцатеричных значений цвета для тепловой карты Plotnine