ImportError: No module named google.auth
当我尝试在
ImportError: No module named google.auth
这是我正在使用的DockerFile。
我已经使用以下代码从源代码安装了Python
1 2 3 4 5 6 | wget https://www.python.org/ftp/python/2.7/Python-2.7.tgz tar xvzf Python-2.7.tgz cd Python-2.7 ./configure make make install |
然后我通过运行以下命令安装了pip和firebase admin:
1 2 | apt-get install -y python-pip pip install firebase-admin |
然后我在python shell中运行了
我得到了错误:
ImportError: No module named google.auth
我运行
1 2 3 4 5 6 7 8 9 10 | Name: google-auth Version: 1.6.3 Summary: Google Authentication Library Home-page: https://github.com/GoogleCloudPlatform/google-auth- library-python Author: Google Cloud Platform Author-email: jonwayne+google-auth@google.com License: Apache 2.0 Location: /usr/local/lib/python2.7/dist-packages Requires: cachetools, six, pyasn1-modules, rsa |
我运行
/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages
这意味着
我查看了
https://www.python.org/dev/peps/pep-0394/
因此,我不明白您为什么要重新安装它。发生的事情是您使用了一个Dockerfile,该文件在
1 2 3 4 5 | if test -f /usr/local/bin/python -o -h /usr/local/bin/python; \\ then rm -f /usr/local/bin/python; \\ else true; \\ fi (cd /usr/local/bin; ln python2.7 python) |
然后,您可以验证容器中的当前Python解释器:
1 2 3 4 5 | root@9b9176e6c26c:/# which python /usr/local/bin/python root@9b9176e6c26c:/# python --version Python 2.7 |
同时,我从Dockerfile中删除了安装Python2的部分并得到了它。
1 2 3 4 5 | root@e6dd827dac1d:/# which python /usr/bin/python root@e6dd827dac1d:/# python --version Python 2.7.15rc1 |
然后直接导入您想要的内容:
1 2 3 4 | root@e6dd827dac1d:/# python -c"import firebase_admin" root@e6dd827dac1d:/# echo $? 0 |
您可以通过返回代码0看到成功。
修改后的Dockerfile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | FROM adamantium/flutter RUN apt-get update && \\ apt-get install -y wget && \\ apt-get install -y build-essential && \\ apt-get install -y zlib1g && \\ apt-get install zlib1g-dev && \\ wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz && \\ tar xvzf Python-3.6.7.tgz && \\ cd Python-3.6.7 && \\ ./configure && make && \\ make install RUN apt-get install -y python-pip && \\ pip install firebase-admin |
构建您的Docker映像后:
-
echo $PYTHONPATH 的结果未返回任何内容 -
运行位于
/usr/local/bin/python 的python解释器使我可以导入firebase_admin
以供参考:
1 2 3 4 5 6 7 8 | $ which pip /usr/bin/pip $ /usr/bin/python Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0] on linux2 Type"help","copyright","credits" or"license" for more information. >>> import firebase_admin >>> |
如果您打算在Dockerfile中运行脚本(即CMD / ENTRYPOINT),我建议传入工作解释器的完整路径,本例中的完整路径位于