如何执行正确的 Python 来导入已安装的 tensorflow.transform 包?

Posted

技术标签:

【中文标题】如何执行正确的 Python 来导入已安装的 tensorflow.transform 包?【英文标题】:How to execute the right Python to import the installed tensorflow.transform package? 【发布时间】:2020-06-18 09:31:42 【问题描述】:

我的 Python 版本是 2.7.13。

我在 Jupyter Notebook 中运行以下命令。

首先,我安装了软件包

%%bash
pip uninstall -y google-cloud-dataflow
pip install --upgrade --force tensorflow_transform==0.15.0  apache-beam[gcp]

那么,

%%bash
pip freeze | grep -e 'flow\|beam'

我可以看到安装了 tensorflow-transform 包。

apache-beam==2.19.0
tensorflow==2.1.0
tensorflow-datasets==1.2.0
tensorflow-estimator==2.1.0
tensorflow-hub==0.6.0
tensorflow-io==0.8.1
tensorflow-metadata==0.15.2
tensorflow-probability==0.8.0
tensorflow-serving-api==2.1.0
tensorflow-transform==0.15.0

但是当我尝试导入它时,出现警告和错误。

WARNING:tensorflow:From /usr/local/lib/python2.7/dist-packages/tensorflow_estimator/python/estimator/api/_v1/estimator/__init__.py:12: The name tf.estimator.inputs is deprecated. Please use tf.compat.v1.estimator.inputs instead.


ImportErrorTraceback (most recent call last)
<ipython-input-3-26a4792d0a76> in <module>()
      1 import tensorflow as tf
----> 2 import tensorflow_transform as tft
      3 import shutil
      4 print(tf.__version__)

ImportError: No module named tensorflow_transform

经过一番调查,我想我对这个问题有了一些想法。 我运行这个:

%%bash
pip show tensorflow_transform| grep Location

这是输出

Location: /home/jupyter/.local/lib/python3.5/site-packages

我尝试通过将 /home/jupyter/.local/lib/python3.5/site-packages 添加到 $PATH 的开头来修改 $PATH。但是,我仍然无法导入 tensorflow_transform。

基于以上和以下信息,我认为,当我运行导入命令时,它执行的是 Python 2.7,而不是 Python 3.5

import sys
print('\n'.join(sys.path))

/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/local/lib/python2.7/dist-packages/IPython/extensions
/home/jupyter/.ipython

还有,

import sys
sys.executable

'/usr/bin/python2'

我认为问题是 tensorflow_transform 包安装在 /home/jupyter/.local/lib/python3.5/site-packages 中。但是当我运行“导入”时,它会转到 /usr/local/lib/python2.7/dist-packages 来搜索包,而不是 /home/jupyter/.local/lib/python3.5/site-packages ,所以即使更新 $PATH 也无济于事。我说的对吗?

我尝试升级我的python,但是

%%bash
pip install upgrade python

Defaulting to user installation because normal site-packages is not writeable

然后,我添加了 --user。看来python并没有真正升级。

%%bash
pip install --user upgrade python

%%bash
python -V

Python 2.7.13

有什么办法吗?

【问题讨论】:

【参考方案1】:

在我看来,您的 jupyter notebook 没有使用正确的 python 环境。 也许,您安装了 3.5 版下的软件包, 但笔记本使用另一个,因此找不到库

您可以通过单击选择其他解释器:Python(your version) - 左下角。

VS-Code - Select Python Environment 1

但是您也可以通过以下方式执行此操作:

CNTRL+SHIFT+P > 选择 Python Interpreter 启动 Jupyter Server

如果这不起作用,请确保您尝试导入的包安装在正确的 python 环境下。

如果没有打开终端,请激活环境并使用:

pip 安装包名

例如,我在这里做了同样的事情:(注意:我使用的是 Anaconda) installing tensorflow_transform

安装后,您可以直接将其导入代码中,如下所示: importing tensorflow_transform

【讨论】:

以上是关于如何执行正确的 Python 来导入已安装的 tensorflow.transform 包?的主要内容,如果未能解决你的问题,请参考以下文章

如何导入已安装到另一个目录的 Python 库?

如何检查anaconda包是否已正确安装

如何在HTML中导入已下载好的字体,我这样导入正确吗

python pip 升级

python已安装了一个包,但是导入包中的模块时报错没有这个包

已安装包(Python PIL/Pillow)但我无法导入它