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