Невозможно демонизировать скрипт python с помощью systemd — нет модуля с именем oandapyV20

Вы также можете добавить «-T-устройство» к вашему tpm2 _nvread, чтобы он взаимодействовал напрямую с /dev/tpm0 без необходимости проходить через диспетчер ресурсов.

0
02.04.2020, 15:32
1 ответ

Судя по всему, вы исходили из того, что всякий раз, когда вы вызываете source /home/user/venv/activate, команда python3(и команда pip3)впоследствии будут вызывать соответствующий исполняемый файл из /home/user/venv/bin.

Однако уточнение, которое вы добавили в комментариях, указывает на то, что предположение было неверным. Вы не вызывали python из вашей виртуальной среды при запуске script.py; кажется, вы вызывали python в/usr/bin(и его соответствующий pip, так как python в вашем virtualenv, похоже, не имеет установленного модуля oandapyV20, в то время как системный python.)

Изучите вывод

echo $PATH
echo $PYTHONPATH

Переменная среды $PATHпредставляет собой разделенный двоеточием -список путей в вашей системе для поиска при вводе команды. Либо /home/user/venv/binотсутствует в этом списке, либо это происходит после появления /usr/bin, которое содержит совпадение для python3($PATH, перестанет сканироваться после первого совпадения.)$PATHобычно устанавливается с помощью$HOME/.bashrc(или /etc/bashrc, если не установлено там ), и если бы ваше предположение было правильным, /home/user/venv/activateбыло бы установкой $PATHдля добавления /home/user/venv/binк нему.

$PYTHONPATHдолжен указать python, где искать модули для загрузки.(Его также можно изменить или прочитать из вашего скрипта с помощью sys.path.)

Это объясняет, почему изменение команды вашего модуля systemd сработало --в конечном итоге он вызывает тот же python, что и ваша рабочая команда.

2
28.04.2021, 23:19

Теги

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