Crontab - проблемы с импортом модулей Python

Мне нужно делать запрос на получение на веб-сайт каждые X минут, и я не могу заставить его работать в crontab. Я пытался:

  • Написание сценария оболочки, содержащего путь к python (PYTHONPATH = / Users / myname / opt / anaconda3 / bin / python) и путь к файлу python
  • Указание пути python непосредственно в cron, попытка как с файлом python, так и с файлом оболочки
  • Добавление pythonpath в качестве shebang в верхнюю часть моего скрипта python и запуск этого

Все попытки запустить файл python или оболочки содержали полный путь к файлу. Путь к python копируется из $ which python.

Ничего из того, что я пробовал, не сработало, и все они терпят неудачу в один и тот же момент, импортируя модуль запросов. Я понятия не имею, что мне не хватает.

Единственное, что я вижу, это то, что запросы устанавливаются в anaconda3 / lib, тогда как pythonpath ведет к anaconda3 / bin, но я не уверен, что это означает что-нибудь.

возможно, сначала создайте скрипт, который отображает (или лучше сохранит в файл) всю информацию о запуске Python - и запустите его в cron. Таким образом, вы будете знать, какую версию Python он использует, и вы будете знать, где вам нужно установить модуль requests. В системе может быть установлено много Pythons, и она может использовать Python, на котором не установлен requests. И тогда вам нужно будет установить requests на правильном Python. И лучше установить его как глобальный модуль, а не как локальный, потому что cron может запускать скрипт с разными настройками / привилегиями.

furas 01.04.2021 23:48
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
18
0

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