Не могу импортировать Tensorflow 2.2.0rc2 в Google Colab при установке из setup.py - PullRequest
1 голос
/ 30 марта 2020

Я пытаюсь импортировать последнюю версию rc2 Tensorflow (2.2.0rc2 на эту дату) в Google Colab, но не могу сделать это при установке из моего скрипта установки setup.py.

Когда я устанавливаю Tensorflow вручную используя !pip install tensorflow==2.2.0rc2 из ячейки Colab, все в порядке, и я могу импортировать Tensorflow.

Следующее, как у меня есть установка установки моих зависимостей в Google Colab:

# Executes the cell in bash mode
%%bash

if [ ! -d "/content/deep-deblurring/" ]; 
    then 
        git clone https://github.com/ElPapi42/deep-deblurring;
        cd deep-deblurring/
    else 
        cd deep-deblurring/; 
        git pull; 
fi;

git checkout development
cd ..

pip uninstall -y tensorflow tensor2tensor tensorboard tensorboardcolab tensorflow-datasets tensorflow-estimator tensorflow-gan tensorflow-hub tensorflow-metadata tensorflow-privacy tensorflow-probability

pip install colab-env
pip install --upgrade grpcio

cd deep-deblurring/
python setup.py install
cd ..

Следующее мой файл setup.py:

#!/usr/bin/python
# coding=utf-8

"""Setup and install the package and all the dependencies."""

from setuptools import setup, find_packages

with open('requirements.txt') as pro:
    INSTALL_REQUIRES = pro.read().split('\n')

setup(
    author='Whitman Bohorquez, Mo Rebaie',
    author_email='whitman-2@hotmail.com',
    name='deblurrer',
    license='MIT',
    description='Image Deblurring using Deep Learning Architecture',
    version='1.0.0',
    url='',
    packages=find_packages(),
    include_package_data=True,
    python_requires='>=3.6',
    install_requires=INSTALL_REQUIRES,
    classifiers=[
        'Development Status :: Alpha',
        'Programming Language :: Python',
        'Programming Language :: Python :: 3.6',
        'Intended Audience :: Developers',
    ],
)

Следующее - файл require.txt в хранилище:

grpcio == 1.27.2
kaggle
numpy
tensorflow >= 2.2.0rc2
pandas

На самом деле Google Colab поставляется с Tensorflow 2.2.0rc1, но я хочу RC2. когда я выполняю:

import tensorflow as tf
print(tf.__version__)

перед выполнением сценария установки setup.py, импорт работает нормально. Но после завершения установки с использованием setup.py выдается ошибка ImportError: No module named 'tensorflow'.

Я проверил установку tenorflow до и после выполнения python setup.py install, и все выглядит нормально, с tenorflow 2.2.0rc1 перед установкой и 2.2.0rc2 после установки.

, как я упомянул вначале, когда iinstall tenorflow вручную с использованием !pip install tensorflow==2.2.0rc2, импорт работает должным образом, поэтому проблема должна быть в файле или требованиях setup.py, что-то в этом роде , но я его не вижу.

Надеюсь, что вы, ребята, помогли!

PD: эта настройка проекта работала на прошлой неделе в пятницу, но сегодня я пытаюсь запустить ее и внезапно перестает работать с без видимой причины.

PD2: https://colab.research.google.com/drive/1Qv8h4ceEtDTq5lvt1uKJG8dk53_bUqBZ это ноутбук Colab, которым я поделюсь с вами, он устанавливает код для воспроизведения проблемы.

PD3: это полный возврат трассировки ошибок в Google Colab при импорте tenorflow:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/usr/lib/python3.6/importlib/_bootstrap.py in _find_spec(name, path, target)

AttributeError: '_TensorflowImportHook' object has no attribute 'find_spec'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
2 frames
<ipython-input-7-69e5d056d1fc> in <module>()
----> 1 import tensorflow as tf
      2 
      3 tf.__version__

/usr/local/lib/python3.6/dist-packages/google/colab/_import_hooks/_tensorflow.py in find_module(self, fullname, path)
     26     if fullname != 'tensorflow':
     27       return None
---> 28     self.module_info = imp.find_module(fullname.split('.')[-1], path)
     29     return self
     30 

/usr/lib/python3.6/imp.py in find_module(name, path)
    295         break  # Break out of outer loop when breaking out of inner loop.
    296     else:
--> 297         raise ImportError(_ERR_MSG.format(name), name=name)
    298 
    299     encoding = None

ImportError: No module named 'tensorflow'

---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.

To view examples of installing some common dependencies, click the
"Open Examples" button below.
---------------------------------------------------------------------------

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Нет ничего плохого в tensorflow, а скорее в том, что _TensorflowImportHook от Colab отсутствует find_spec impl, поэтому он будет повышаться, если tensorflow установлен как egg dir. Поскольку ловушка не делает ничего полезного, кроме выдачи уведомления об обновлении tensorflow до 2.0, а планируется удалить в любом случае , простое исправление - очистить его от sys.meta_path где-то в начале записная книжка:

[1] import sys
    sys.meta_path[:] = [hook for hook in sys.meta_path if not h.__class__.__name__ == '_TensorflowImportHook']

[2] import tensorflow as tf
    print(tf.__version__)
0 голосов
/ 30 марта 2020

Я нашел обходной путь, но это далеко не решение этой проблемы, поэтому это не будет принято как решение, но поможет людям, находящимся в такой же беде, продолжать работу:

Установите ваши требования вручную перед установкой собственного пакета, в моем случае это pip install -r "/content/deep-deblurring/requirements.txt":

# Executes the cell in bash mode
%%bash

if [ ! -d "/content/deep-deblurring/" ]; 
    then 
        git clone https://github.com/ElPapi42/deep-deblurring;
        cd deep-deblurring/
    else 
        cd deep-deblurring/; 
        git pull; 
fi;

git checkout development
cd ..

pip uninstall -y tensorflow tensor2tensor tensorboard tensorboardcolab tensorflow-datasets tensorflow-estimator tensorflow-gan tensorflow-hub tensorflow-metadata tensorflow-privacy tensorflow-probability

pip install colab-env
pip install --upgrade grpcio

pip install -r "/content/deep-deblurring/requirements.txt"

cd deep-deblurring/
python setup.py install
cd ..

В настоящее время это исправляет проблему импорта, но это не чистое решение, давайте надеяться на лучшее объяснение позже. !

...