我找不到与我的问题相关的任何内容
我在Docker文件下面试过了
RUN apt-get update && apt-get install -y \
software-properties-common
RUN apt-get update && \
apt-cache search openjdk && \
apt-get install openjdk-8-jdk && \
apt-get clean;
RUN apt-get update && \
apt-get install ca-certificates-java && \
apt-get clean && \
update-ca-certificates -f;
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME
#tabula.errors.JavaNotFoundError: `java` command is not found from this Python
#process.Please ensure Java is installed and PATH is set for `java`
当我使用导入表格时,我得到了tabula.errors.javannotfounderror.can somebody please help what to do to get get the error in docker?
更新:
我使用 flask 和mongodb。在 flask 中有一个代码负责读取pdf文件,这是tabula,它需要Java,因为它在其错误中说。对于其他python包,我安装了pipfile和pipfile. lock
RUN pip install pipenv
COPY Pipfile . #<---- contains tabula package
COPY Pipfile.lock . #<---- contains tabula package
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy
##But i have no idea how to install java for tabula dependecy.
最终更新*
我用pdfplumber替换了tabula。现在工作良好,感谢所有试图帮助我的人。
2条答案
按热度按时间kqlmhetl1#
一般来说,我们应该避免使用一个容器映像有多个主进程,比如python和java,我个人建议找到一个不需要java环境的tabula-py的替代品,因为这是使用here指定的容器时的最佳实践:
通常建议您通过对每个容器使用一个服务来区分关注的区域。
考虑到这一点,因为我不知道你是否能做这些事情,我也会提供一个替代方案。
this docker image将多个可运行的环境打包成一个,如java和python,它的docker文件列在here中,因为它包含了比你需要的更多的环境,你可以根据你的需要精简它。
也有this项目,虽然它没有更新一段时间或this文章描述了一个consise自制的python和java dockerfile
2q5ifsrm2#
如果有人试图实现这一点,而不想切换到另一个库,这里有一个方法,使它与Tabula的工作。
顺便说一句,这里我使用的是Jupyter笔记本中的Tabula...但你只需要将Jupyter的图像更改为Python,就可以实现你想要的 flask 。
您的docker-compose将如下所示:
这是您的Docker文件:
您的要求. txt
创建文件夹“work”(即将与容器同步的文件夹)。
现在打开终端并输入
docker-compose up --build
这个命令将构建并启动你的容器。完成这些步骤后,你应该准备好了。使用笔记本中的以下代码行进行测试: