安装tensorflow中遇到的问题
安装不上tensorflow时,可以
source /Users/eternity/project/python/spider/cnn_captcha/venv/bin/activate
pip install tensorflow
安装numpy报错时
source /Users/eternity/project/python/spider/cnn_captcha/venv/bin/activate
pip install numpy==1.21.6
[ERROR: Could not install packages due to an OSError: Errno 2] No such file or directory:错误解决
安装python的环境时,使用pip安装某些包(如TensorFlow、tensor2tensor等),可能会弹出如下错误提示:
ERROR: Could ``not` `install packages due to an OSError: [Errno ``2``] No such ``file` `or` `directory: 'd:\users\xxxx\anaconda3\xxx\site``-``packages\numpy``-``1.20``.``3.dist``-``info\METADATA
解决办法:
还可能安装环境里对应的安装包里存在其它版本,把其它版本的对应文件夹里的内容拷到错误提示里的路径下就可以了,如系统提示没有numpy-1.20.3.dist-info\METADATA文件,如果发现安装路径下发现已经有个1.20.2版本的文件,直接把1.20.2版本的文件拷到1.20.3的路径下,再次安装即可。
AttributeError: module ‘tensorflow.compat.v1‘ has no attribute ‘contrib‘
将之前的代码迁到新服务器后报错:“AttributeError: module ‘tensorflow.compat.v1’ has no attribute ‘contrib’”。
原来的代码使用的是tf1.8,新服务器的环境是tf2.5,并且代码中调用tf1中的API,所以会报错。
具体情况如下:
原代码:
initializer = tf.contrib.layers.xavier_initializer()
报错原因是,tf2中删除了contrib这个库,因此无法使用xavier_initializer()初始化。但是提供了相同功能的函数:
glorot uniform initializer(),两者的初始化方式是相同的。因此使用如下代码,即可解决上述问题。
initializer=tf.glorot_uniform_initializer()
OSERROR: IMAGE FILE IS TRUNCATED解决思路及方案。
那么问题来了,我们该如何解决这个问题呢,现在有两个方案。
1.将无用的数据直接抛掉
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
12
这个方法的运用的意思是 当遇到数据截断的图片时,PIL会直接break,跳出函数,不报错,进行下一个
2.补全数据,继续用
有时候数据缺损的很多,数据抛掉成本太高,并且截断部分并不会影响太多,那么就考虑补一补我们再用吧,最简单的方法就是在后面补上数据ff d9
from PIL import Image
from io import BytesIO
import matplotlib.pyplot as plt
pimg='1.jpg'
with open(pimg, 'rb') as f:
#这样读就是二进制的
f = f.read()
#这句 就是补全数据的
f=f+B'\xff'+B'\xd9'
im = Image.open(BytesIO(f))
if im.mode != "RGB":
im = im.convert('RGB')
imr = im.resize((256, 256), resample=Image.BILINEAR)
imr.show()