【问题标题】:Python import error with cronjob in a docker containerdocker容器中的cronjob的Python导入错误
【发布时间】:2021-08-04 11:22:09
【问题描述】:

我有一个 python 脚本,它在 docker 容器中使用 cronjob 每分钟运行一次 这是我的 Dockerfile

FROM python:3.8.3 AS base

RUN apt-get update
RUN apt-get -y install software-properties-common cron vim
RUN apt-get update
RUN apt-get -y install python3-pip
RUN pip3 install pandas
RUN pip3 install sklearn
RUN pip3 install SQLAlchemy
RUN pip3 install ConfigParser
RUN pip3 install psycopg2
RUN pip3 install numpy
RUN pip3 install xgboost
RUN pip3 install xlrd
RUN pip3 install matplotlib

FROM base AS publish

WORKDIR /app
COPY . /app
COPY crontab /etc/cron.d/crontab
COPY main.py /app/main.py
RUN chmod 0644 /etc/cron.d/crontab
RUN /usr/bin/crontab /etc/cron.d/crontab

CMD ["cron", "-f"]

这是我的 crontab 文件

#run python script every minutes
* * * * * python /app/main.py > /proc/1/fd/1 2>/proc/1/fd/2

这是我的代码的开头:

import os
print("Code is running")
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas import DataFrame
from pandas import concat
from calendar import monthrange
from datetime import date
import pickle
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, String, Integer, LargeBinary
from my_ml_library.regressor import Regressor
.......

当我从这个 dockerfile 构建映像并运行它时,脚本会每分钟打印一次:

代码正在运行 回溯(最近一次通话最后): 文件“/app/main.py”,第 3 行,在 将 numpy 导入为 np ImportError:没有名为 numpy 的模块

另一方面,如果我在 docker 容器中运行我的代码而不使用 cron,它可以正常工作。我怎样才能正确运行我的代码?

【问题讨论】:

    标签: python docker cron dockerfile


    【解决方案1】:

    您需要在 crontab 文件中指定 Python 安装的绝对路径。

    #run python script every minutes
    * * * * * /usr/local/bin/python /app/main.py > /proc/1/fd/1 2>/proc/1/fd/2
    

    你可以找到Dockerfilehere

    main.py

    import numpy as np
    a = np.arange(15).reshape(3, 5)
    print(a)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2023-04-10
      • 2020-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2015-10-22
      相关资源
      最近更新 更多