0

The version of my Python is 2.7.13.

I run the following in Jupyter Notebook.

Firstly, I installed the packages

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

Then,

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

I can see that the package tensorflow-transform is installed.

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

However when I tried to import it, there are warning and error.

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

After some investigation, I think I have some ideas of the problem. I run this:

%%bash
pip show tensorflow_transform| grep Location

This is the output

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

I tried to modify the $PATH by adding /home/jupyter/.local/lib/python3.5/site-packages to the beginning of $PATH. However, I still failed to import tensorflow_transform.

Based on the above and the following information, I think, when I ran the import command, it executes Python 2.7, not 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

Also,

import sys
sys.executable

'/usr/bin/python2'

I think the problem is tensorflow_transform package was installed in /home/jupyter/.local/lib/python3.5/site-packages. But when I run "Import", it goes to /usr/local/lib/python2.7/dist-packages to search for the package, rather than /home/jupyter/.local/lib/python3.5/site-packages, so even updating $PATH does not help. Am I right?

I tried to upgrade my python, but

%%bash
pip install upgrade python

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

Then, I added --user. It seems that the python is not really upgraded.

%%bash
pip install --user upgrade python

%%bash
python -V

Python 2.7.13

Any solution?

1 Answers1

0

It seems to me that your jupyter notebook is not using the right python environment. Perhaps, you installed the package under version 3.5, but the Notebook uses the other one, thus it cannot find the library

You can pick the other interpreter by clicking on: Python(your version) - bottom left.

VS-Code - Select Python Environment 1

However you can do this also via:

CNTRL+SHIFT+P > Select Python Interpreter to start Jupyter Server

If that does not work make sure that the package you are trying to import is installed under the correct python environment.

If not open up a terminal, activate the environment and install it using:

pip install packagename

For example i did the same thing here: (Note: I'm using Anaconda) installing tensorflow_transform

After a installation, you can import it in your code directly like this: importing tensorflow_transform

zxcyq
  • 1
  • 2