ImportError: No module named google.auth
ImportError: No module named google.auth
当我尝试在 python 2.7
中导入 firebase_admin
时,出现错误:
ImportError: No module named google.auth
这是我正在使用的 DockerFile。
我使用
从源代码安装了 Python
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
然后我通过 运行ning 安装了 pip 和 firebase admin:
apt-get install -y python-pip
pip install firebase-admin
然后我在运行import firebase_admin
里面pythonshell。
我收到错误:
ImportError: No module named google.auth
我已经 运行 pip show google.auth
并得到以下输出:
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
我 运行 echo $PYTHONPATH
得到了这个:
/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages
也就是说安装了google.auth
,它的目录在PYTHONPATH
,为什么python找不到呢?以及如何修复它?
构建您的 docker 图像时:docker build -t test -f Dockerfile .
我得到的结果与您描述的不同。
echo $PYTHONPATH
的结果没有返回
- 运行 位于
/usr/local/bin/python
的 python 解释器允许我导入 firebase_admin
供参考:
$ 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),我建议传入工作解释器的完整路径,在本例中位于 /usr/local/bin/python
我查看了 adamantium/flutter
的图像并在 Dockerfile 中看到它依赖于 ubuntu:18.04
直接与 Python2 一起提供,如 PEP-394 中所述(参见link 下面了解更多相关信息)。
https://www.python.org/dev/peps/pep-0394/
所以,我不明白你为什么要重新安装它。发生的事情是您使用了一个 Dockerfile,它在 /usr/local/bin/
中安装了另一个版本的 Python2 并覆盖了指向原始 Python2 的符号 link,正如您在 docker build
日志
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 解释器:
root@9b9176e6c26c:/# which python
/usr/local/bin/python
root@9b9176e6c26c:/# python --version
Python 2.7
与此同时,我已经从 Dockerfile 中删除了安装 Python2 的部分并得到了这个。
root@e6dd827dac1d:/# which python
/usr/bin/python
root@e6dd827dac1d:/# python --version
Python 2.7.15rc1
然后直接导入你想要的:
root@e6dd827dac1d:/# python -c "import firebase_admin"
root@e6dd827dac1d:/# echo $?
0
返回code 0可以看出成功了
修改后的Dockerfile:
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
当我尝试在 python 2.7
中导入 firebase_admin
时,出现错误:
ImportError: No module named google.auth
这是我正在使用的 DockerFile。
我使用
从源代码安装了 Pythonwget 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
然后我通过 运行ning 安装了 pip 和 firebase admin:
apt-get install -y python-pip
pip install firebase-admin
然后我在运行import firebase_admin
里面pythonshell。
我收到错误:
ImportError: No module named google.auth
我已经 运行 pip show google.auth
并得到以下输出:
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
我 运行 echo $PYTHONPATH
得到了这个:
/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages
也就是说安装了google.auth
,它的目录在PYTHONPATH
,为什么python找不到呢?以及如何修复它?
构建您的 docker 图像时:docker build -t test -f Dockerfile .
我得到的结果与您描述的不同。
echo $PYTHONPATH
的结果没有返回- 运行 位于
/usr/local/bin/python
的 python 解释器允许我导入 firebase_admin
供参考:
$ 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),我建议传入工作解释器的完整路径,在本例中位于 /usr/local/bin/python
我查看了 adamantium/flutter
的图像并在 Dockerfile 中看到它依赖于 ubuntu:18.04
直接与 Python2 一起提供,如 PEP-394 中所述(参见link 下面了解更多相关信息)。
https://www.python.org/dev/peps/pep-0394/
所以,我不明白你为什么要重新安装它。发生的事情是您使用了一个 Dockerfile,它在 /usr/local/bin/
中安装了另一个版本的 Python2 并覆盖了指向原始 Python2 的符号 link,正如您在 docker build
日志
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 解释器:
root@9b9176e6c26c:/# which python
/usr/local/bin/python
root@9b9176e6c26c:/# python --version
Python 2.7
与此同时,我已经从 Dockerfile 中删除了安装 Python2 的部分并得到了这个。
root@e6dd827dac1d:/# which python
/usr/bin/python
root@e6dd827dac1d:/# python --version
Python 2.7.15rc1
然后直接导入你想要的:
root@e6dd827dac1d:/# python -c "import firebase_admin"
root@e6dd827dac1d:/# echo $?
0
返回code 0可以看出成功了
修改后的Dockerfile:
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