从setup.py安装时,无法在Google Colab中导入Tensorflow 2.2.0rc2

2024-04-16 19:41:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在Google Colab中导入Tensorflow的最新rc2版本(目前为2.2.0rc2),但从我的setup.py安装脚本安装时无法导入

当我使用Colab单元格中的!pip install tensorflow==2.2.0rc2手动安装Tensorflow时,一切正常,我可以导入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',
    ],
)

下一个是存储库中的requirements.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'

我在执行python setup.py install之前和之后检查了tensorflow的安装,一切似乎都正常,安装前使用tensorflow 2.2.0rc1,安装后使用2.2.0rc2

正如我首先提到的,当我使用!pip install tensorflow==2.2.0rc2手动安装tensorflow时,导入工作正常,所以问题一定是围绕setup.py文件或需求,类似的,但我没有看到它

希望你们的帮助

PD:这个项目设置在上周五的最后一周开始工作,但今天我尝试运行它,突然没有明显的原因而停止工作

PD2:https://colab.research.google.com/drive/1Qv8h4ceEtDTq5lvt1uKJG8dk53_bUqBZ这是我与您共享的一个Colab笔记本,它设置了重现问题的代码

PD3:这是导入tensorflow时Google Colab中的完整错误回溯抛出:

---------------------------------------------------------------------------
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.
---------------------------------------------------------------------------

Tags: installpipthenameinpyimporttensorflow
2条回答

tensorflow没有什么问题,而是Colab的_TensorflowImportHook缺少find_specimpl,因此如果tensorflow作为egg dir安装,它将引发。由于钩子除了发出将tensorflow更新为2.0和is scheduled for removal anyway的通知之外没有任何用处,因此一个简单的修复方法是从笔记本开始的某处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__)

我找到了一个解决办法,但到目前为止,这并不是这个问题的解决方案,因此这不会被接受为解决方案,但会帮助有同样困难的人继续工作:

在安装自定义软件包之前,请手动安装您的需求,在我的示例中,这是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 ..

目前这解决了导入问题,但这不是一个干净的解决方案,希望以后能有更好的解释

相关问题 更多 >