This is with pillow 6.2.1 on
Python 3.7.3 | packaged by conda-forge | (default, Jul 1 2019, 22:01:29) [MSC v.1900 64 bit (AMD64)]
Seems libtiff is found without a problem, but decoding fails:
In [5]: dat = img.getdata()
have fileno, calling fileno version of the decoder.
Traceback (most recent call last):
File "<ipython-input-5-d82315236633>", line 1, in <module>
dat = img.getdata()
File "C:\Users\kmilos\.conda\envs\dev\lib\site-packages\PIL\Image.py", line 1304, in getdata
self.load()
File "C:\Users\kmilos\.conda\envs\dev\lib\site-packages\PIL\TiffImagePlugin.py", line 1097, in load
return self._load_libtiff()
File "C:\Users\kmilos\.conda\envs\dev\lib\site-packages\PIL\TiffImagePlugin.py", line 1209, in _load_libtiff
raise IOError(err)
OSError: -2
In [6]: dat = img.getdata()
In [7]: print(dat)
<ImagingCore object at 0x000001FC04A55DB0>
Also note that on the second attempt I get an object back, bit if I try to convert to an array, it is filled with zeros, so issue #3863 is not really closed for me.
No problems if I use 'TIFF' or 'TIFF-FI' formats via imageio, but 'TIFF-PIL' fails with the same error.
Could you provide the image that is causing the problem?
Happens also with this tiff_adobe_deflate compressed mandrill.zip, so not limited to tiff_lzw... Maybe related to the combination of multiple strips w/ compression?
Loading the mandrill image, I'm unable to replicate using Pillow 6.2.1 with Python 3.7.5 on macOS 10.15.
from PIL import Image
im = Image.open('mandrill.tif')
im.load()
On Windows it is line 1189 of tiffimageplugin.py where the problem occurs
n, err = decoder.decode(b"fpfp")
results in n=-1 and err=-2
I'm also unable to replicate with 6.2.1 on AppVeyor Windows or master on GHA Windows.
I'm now suspecting this might be due to Anaconda building against new libtiff 4.1.0...
Your test is still w/ 4.0.10? Indeed, I don't see a problem if I try the wheel from pypi statically linked against 4.0.10.
Hmm, unfortunately no, I have now tried Pillow 6.2.1 on AppVeyor Windows with libtiff 4.1.0, and I am still unable to reproduce.
I have reproduced on a second Windows x64 machine, also set up with Anaconda... I reported the issue for the conda-forge package as https://github.com/conda-forge/pillow-feedstock/issues/68
FWIW, I drilled down to 'IMAGING_CODEC_BROKEN` being returned from ImagingLibTiffDecode() but no idea why for now (don't think I'll manage a debug build any time soon...)
Hello, I have same problem also.
File "D:\ProgramData\Anaconda3\envs\spyder\lib\site-packages\PIL\TiffImagePlugin.py", line 1209, in _load_libtiff
raise IOError(err)
OSError: -2
Do you find any solution?
https://github.com/conda-forge/pillow-feedstock/issues/69#issuecomment-564052801 has a workaround:
I can reproduce that on Windows. Downgrading libtiff to 4.0.10 (
conda install libtiff=4.0.10) works. Investigating it...PS: it works fine on macOS and Linux, only Windows is failing.
It looks like this issue is due to libtiff-4.1.0 CMake builds on Windows now unconditionally enabling USE_WIN32_FILEIO:
https://gitlab.com/libtiff/libtiff/commit/59eb35172f8dc9a46469ad0e4877f9c88ab796cd
I built Pillow-git head against a CMake static build of libtiff-4.1.0 and get 51 test failures. Disabling USE_WIN32_FILEIO in CMakeLists.txt fixes all the Pillow test failures.
IIUC, the TIFFFdOpen functions from tif_unix.c and tif_win32.c are not compatible. The first needs a fileno from the C runtime (py_file_object.fileno()), the latter a Windows file handle (msvcrt.get_osfhandle(py_file_object.fileno()))...
I submitted an issue to the libtiff project: https://gitlab.com/libtiff/libtiff/issues/173
@cgohlke I also found https://gitlab.com/libtiff/libtiff/merge_requests/93
Trying to get windows patched up on conda-forge https://github.com/conda-forge/libtiff-feedstock/pull/49
@cgohlke the patch definitely broke opencv on conda forge
So strange, I don't know opencv does it:
conda install -c conda-forge opencv libtiff=4.0 python=3.7 pillow
Then:
from PIL import Image
im = Image.open('hopper_lzw.tif')
im.load()
import cv2
cv2.imread('hopper_lzw.tif')
both work.
Now, install the unpatched 4.1
conda install libtiff=4.1=*1
PIL fails, opencv works.
Now, install the patched up 4.1
conda install libtiff=4.1=*2
PIL works, opencv doesn't.
That patch is not complete! It merely fixes/demonstrates the Pillow failures. There are other places in tif_win32.c that would need to be patched for libtiff to work...
My solution for now is to patch tiff-4.1.0 CMakeLists.txt in line ~601 not to use tif_win32.c:
set(win32_io FALSE)
thanks, I made a more thorough patch and it seems to be working with:
All previously comipled, most updated versions of the packages available on conda-forge.
I'll likely try to upload the package to my own conda channel mark.harfouche
You should be able to test the packages ending in _4 for windows when they finishing uploading in maybe something like 10 mins:
https://anaconda.org/mark.harfouche/libtiff/files
I have also run into a similar problem on Windows 10, Python 3.7.6, Pillow 7.0.0.
from PIL import Image
p = 'test.tif'
img = Image.open(p)
img_copy = img.copy()
yields:
Traceback (most recent call last):
File "C:\Users\darien\Desktop\test.py", line 5, in <module>
img_copy = img.copy()
File "C:\ProgramData\Anaconda3\lib\site-packages\PIL\Image.py", line 1084, in copy
self.load()
File "C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py", line 1070, in load
return self._load_libtiff()
File "C:\ProgramData\Anaconda3\lib\site-packages\PIL\TiffImagePlugin.py", line 1182, in _load_libtiff
raise OSError(err)
OSError: -2
Is this issue still being worked on?
are you using conda-forge? are you in a position where you can test the package from my channel?
@hmaarrfk 4.1.0-h885aae3_4 seems to work, thanks
Awesome, we just updated conda forge with the same patch
@hmaarrfk sorry for the late reply. Conda has repeatedly borked itself on my machine. After a few fresh installs, I have
$ conda list libtiff
# packages in environment at C:\ProgramData\Miniconda3:
#
# Name Version Build Channel
libtiff 4.1.0 h56a325e_0
_which allows my basic test to pass_. Note, this is not your patched version of libtiff (I was unable to convince conda to download any conda-forge version of libtiff that was not 4.0.9).
Ok. We'll keep me updated if the patch I made breaks new things on conda forge (maybe on conda forge though).
I'll probably try to backport the patch from cgholke which is slightly different than what I have.
@hmaarrfk @cgohlke A different patch has been just recently merged upstream, wondering if addresses this correctly...
I am currently running into the same issue where I can not load a .tif on windows, but the script works on linux. I installed the 4.10, any other suggestions?
@kmilos i think it was merged after 4.1 was released correct? Maybe we can backport the patch to 4.1? I would prefer if upstream just made a new release.
Easier for us to track. We've been having trouble with libtiff at conda-forge.... help is appreciated.
@hmaarrfk Correct. Unfortunately I don't have a build environment at hand to confirm backporting it would fix this problem, so the workaround in 4.1.0=h885aae3_4 and later is ok for now. Seems there's been quite a bit of activity around libtiff lately so one can only hope there will be a new release in the not too distant future...
i wouldn't necessarily pin so hard, but you could maybe require a specific build version? though that is more fragile.
Even if i did come out with build #5, then it wouldn't necessarily fix things for you.... you would have to dependo n build 5. :/
Is this a common error?
anaconda3\lib\site-packages\PIL\TiffImagePlugin.py", line 1182, in _load_libtiff
raise OSError(err)
can you provide the output of conda -list
usage: conda-script.py [-h] [-V] command ...
conda-script.py: error: the following arguments are required: command
sorry, no dash. I truely appologize.
conda list
# Name Version Build Channel
_ipyw_jlab_nb_ext_conf 0.1.0 py37_0
alabaster 0.7.12 py37_0
anaconda 2020.02 py37_0
anaconda-client 1.7.2 py37_0
anaconda-navigator 1.9.12 py37_0
anaconda-project 0.8.4 py_0
argh 0.26.2 py37_0
asn1crypto 1.3.0 py37_0
astroid 2.3.3 py37_0
astropy 4.0 py37he774522_0
atomicwrites 1.3.0 py37_1
attrs 19.3.0 py_0
autopep8 1.4.4 py_0
babel 2.8.0 py_0
backcall 0.1.0 py37_0
backports 1.0 py_2
backports.functools_lru_cache 1.6.1 py_0
backports.shutil_get_terminal_size 1.0.0 py37_2
backports.tempfile 1.0 py_1
backports.weakref 1.0.post1 py_1
bcrypt 3.1.7 py37he774522_0
beautifulsoup4 4.8.2 py37_0
bitarray 1.2.1 py37he774522_0
bkcharts 0.2 py37_0
blas 1.0 mkl
bleach 3.1.0 py37_0
blosc 1.16.3 h7bd577a_0
bokeh 1.4.0 py37_0
boto 2.49.0 py37_0
bottleneck 1.3.2 py37h2a96729_0
bzip2 1.0.8 he774522_0
ca-certificates 2020.1.1 0
certifi 2019.11.28 py37_0 conda-forge
cffi 1.14.0 py37h7a1dbc1_0
chardet 3.0.4 py37_1003
click 7.0 py37_0
cloudpickle 1.3.0 py_0
clyent 1.2.2 py37_1
colorama 0.4.3 py_0
comtypes 1.1.7 py37_0
conda 4.8.3 py37hc8dfbb8_1 conda-forge
conda-build 3.18.11 py37_0
conda-env 2.6.0 1
conda-package-handling 1.6.0 py37h62dcd97_0
conda-verify 3.4.2 py_1
console_shortcut 0.1.1 4
contextlib2 0.6.0.post1 py_0
cryptography 2.8 py37h7a1dbc1_0
curl 7.68.0 h2a8f88b_0
cycler 0.10.0 py37_0
cython 0.29.15 py37ha925a31_0
cytoolz 0.10.1 py37he774522_0
dask 2.11.0 py_0
dask-core 2.11.0 py_0
decorator 4.4.1 py_0
defusedxml 0.6.0 py_0
diff-match-patch 20181111 py_0
distributed 2.11.0 py37_0
docutils 0.16 py37_0
entrypoints 0.3 py37_0
et_xmlfile 1.0.1 py37_0
fastcache 1.1.0 py37he774522_0
filelock 3.0.12 py_0
flake8 3.7.9 py37_0
flake8-polyfill 1.0.2 py_0 conda-forge
flake8-quotes 3.0.0 pyh9f0ad1d_0 conda-forge
flask 1.1.1 py_0
freetype 2.9.1 ha9979f8_1
fsspec 0.6.2 py_0
future 0.18.2 py37_0
get_terminal_size 1.0.0 h38e98db_0
gevent 1.4.0 py37he774522_0
glew 2.1.0 he025d50_0 conda-forge
glob2 0.7 py_0
greenlet 0.4.15 py37hfa6e2cd_0
h5py 2.10.0 py37h5e291fa_0
hdf5 1.10.4 h7ebc959_0
heapdict 1.0.1 py_0
html5lib 1.0.1 py37_0
hypothesis 5.5.4 py_0
icc_rt 2019.0.0 h0cc432a_1
icu 58.2 ha66f8fd_1
idna 2.8 py37_0
imagecodecs-lite 2019.12.3 py37h8055547_0 conda-forge
imageio 2.6.1 py37_0
imagesize 1.2.0 py_0
importlib_metadata 1.5.0 py37_0
intel-openmp 2020.0 166
intervaltree 3.0.2 py_0
ipykernel 5.1.4 py37h39e3cac_0
ipython 7.12.0 py37h5ca1d4c_0
ipython_genutils 0.2.0 py37_0
ipywidgets 7.5.1 py_0
isort 4.3.21 py37_0
itsdangerous 1.1.0 py37_0
jdcal 1.4.1 py_0
jedi 0.14.1 py37_0
jinja2 2.11.1 py_0
joblib 0.14.1 py_0
jpeg 9b hb83a4c4_2
json5 0.9.1 py_0
jsonschema 3.2.0 py37_0
jupyter 1.0.0 py37_7
jupyter_client 5.3.4 py37_0
jupyter_console 6.1.0 py_0
jupyter_core 4.6.1 py37_0
jupyterlab 1.2.6 pyhf63ae98_0
jupyterlab_server 1.0.6 py_0
keyring 21.1.0 py37_0
kivy 1.11.1 py37h6e11d57_2 conda-forge
kiwisolver 1.1.0 py37ha925a31_0
krb5 1.17.1 hc04afaa_0
lazy-object-proxy 1.4.3 py37he774522_0
libarchive 3.3.3 h0643e63_5
libcurl 7.68.0 h2a8f88b_0
libiconv 1.15 h1df5818_7
liblief 0.9.0 ha925a31_2
libpng 1.6.37 h2a8f88b_0
libsodium 1.0.16 h9d3ae62_0
libspatialindex 1.9.3 h33f27b4_0
libssh2 1.8.2 h7a1dbc1_0
libtiff 4.1.0 h56a325e_0
libxml2 2.9.9 h464c3ec_0
libxslt 1.1.33 h579f668_0
llvmlite 0.31.0 py37ha925a31_0
locket 0.2.0 py37_1
lxml 4.5.0 py37h1350720_0
lz4-c 1.8.1.2 h2fa13f4_0
lzo 2.10 h6df0209_2
m2w64-gcc-libgfortran 5.3.0 6
m2w64-gcc-libs 5.3.0 7
m2w64-gcc-libs-core 5.3.0 7
m2w64-gmp 6.1.0 2
m2w64-libwinpthread-git 5.0.0.4634.697f757 2
markupsafe 1.1.1 py37he774522_0
matplotlib 3.1.3 py37_0
matplotlib-base 3.1.3 py37h64f37c6_0
mccabe 0.6.1 py37_1
menuinst 1.4.16 py37he774522_0
mistune 0.8.4 py37he774522_0
mkl 2020.0 166
mkl-service 2.3.0 py37hb782905_0
mkl_fft 1.0.15 py37h14836fe_0
mkl_random 1.1.0 py37h675688f_0
mock 4.0.1 py_0
more-itertools 8.2.0 py_0
mpmath 1.1.0 py37_0
msgpack-python 0.6.1 py37h74a9793_1
msys2-conda-epoch 20160418 1
multipledispatch 0.6.0 py37_0
navigator-updater 0.2.1 py37_0
nbconvert 5.6.1 py37_0
nbformat 5.0.4 py_0
networkx 2.4 py_0
nltk 3.4.5 py37_0
nose 1.3.7 py37_2
notebook 6.0.3 py37_0
numba 0.48.0 py37h47e9c7a_0
numexpr 2.7.1 py37h25d0782_0
numpy 1.18.1 py37h93ca92e_0
numpy-base 1.18.1 py37hc3f5095_1
numpydoc 0.9.2 py_0
olefile 0.46 py37_0
openpyxl 3.0.3 py_0
openssl 1.1.1d he774522_4
os 0.1.4 0 jmcmurray
packaging 20.1 py_0
pandas 1.0.1 py37h47e9c7a_0
pandoc 2.2.3.2 0
pandocfilters 1.4.2 py37_1
paramiko 2.7.1 py_0
parso 0.5.2 py_0
partd 1.1.0 py_0
path 13.1.0 py37_0
path.py 12.4.0 0
pathlib2 2.3.5 py37_0
pathtools 0.1.2 py_1
patsy 0.5.1 py37_0
pdf2image 1.12.1 py_0 conda-forge
pep8 1.7.1 py37_0
pep8-naming 0.10.0 pyh9f0ad1d_0 conda-forge
pexpect 4.8.0 py37_0
pickleshare 0.7.5 py37_0
pillow 7.0.0 py37hcc1f983_0 anaconda
pip 20.0.2 py37_1
pkginfo 1.5.0.1 py37_0
pluggy 0.13.1 py37_0
ply 3.11 py37_0
powershell_shortcut 0.0.1 3
prometheus_client 0.7.1 py_0
prompt_toolkit 3.0.3 py_0
psutil 5.6.7 py37he774522_0
py 1.8.1 py_0
py-lief 0.9.0 py37ha925a31_2
pycodestyle 2.5.0 py37_0
pycosat 0.6.3 py37he774522_0
pycparser 2.19 py37_0
pycrypto 2.6.1 py37hfa6e2cd_9
pycurl 7.43.0.5 py37h7a1dbc1_0
pydocstyle 4.0.1 py_0
pyflakes 2.1.1 py37_0
pygments 2.5.2 py_0
pylint 2.4.4 py37_0
pynacl 1.3.0 py37h62dcd97_0
pyodbc 4.0.30 py37ha925a31_0
pyopenssl 19.1.0 py37_0
pyparsing 2.4.6 py_0
pyqt 5.9.2 py37h6538335_2
pyreadline 2.1 py37_1
pyrsistent 0.15.7 py37he774522_0
pysocks 1.7.1 py37_0
pytables 3.6.1 py37h1da0976_0
pytesseract 0.3.3 pyh8c360ce_0 conda-forge
pytest 5.3.5 py37_0
pytest-arraydiff 0.3 py37h39e3cac_0
pytest-astropy 0.8.0 py_0
pytest-astropy-header 0.1.2 py_0
pytest-doctestplus 0.5.0 py_0
pytest-openfiles 0.4.0 py_0
pytest-remotedata 0.3.2 py37_0
python 3.7.6 h60c2a47_2
python-dateutil 2.8.1 py_0
python-jsonrpc-server 0.3.4 py_0
python-language-server 0.31.7 py37_0
python-libarchive-c 2.8 py37_13
python_abi 3.7 1_cp37m conda-forge
pytz 2019.3 py_0
pywavelets 1.1.1 py37he774522_0
pywin32 227 py37he774522_1
pywin32-ctypes 0.2.0 py37_1000
pywinpty 0.5.7 py37_0
pyyaml 5.3 py37he774522_0
pyzmq 18.1.1 py37ha925a31_0
qdarkstyle 2.8 py_0
qt 5.9.7 vc14h73c81de_0
qtawesome 0.6.1 py_0
qtconsole 4.6.0 py_1
qtpy 1.9.0 py_0
qutil 3.2.1 6 jmcmurray
requests 2.22.0 py37_1
rope 0.16.0 py_0
rtree 0.9.3 py37h21ff451_0
ruamel_yaml 0.15.87 py37he774522_0
scikit-image 0.16.2 py37h47e9c7a_0
scikit-learn 0.22.1 py37h6288b17_0
scipy 1.4.1 py37h9439919_0
sdl2 2.0.10 h6538335_0 conda-forge
sdl2_image 2.0.2 0 conda-forge
sdl2_mixer 2.0.4 h6538335_0 conda-forge
sdl2_ttf 2.0.15 h4636d2b_0 conda-forge
seaborn 0.10.0 py_0
send2trash 1.5.0 py37_0
setuptools 45.2.0 py37_0
simplegeneric 0.8.1 py37_2
singledispatch 3.4.0.3 py37_0
sip 4.19.8 py37h6538335_0
six 1.14.0 py37_0
smpeg2 2.0.0 h6538335_1 conda-forge
snappy 1.1.7 h777316e_3
snowballstemmer 2.0.0 py_0
sortedcollections 1.1.2 py37_0
sortedcontainers 2.1.0 py37_0
soupsieve 1.9.5 py37_0
sphinx 2.4.0 py_0
sphinxcontrib 1.0 py37_1
sphinxcontrib-applehelp 1.0.1 py_0
sphinxcontrib-devhelp 1.0.1 py_0
sphinxcontrib-htmlhelp 1.0.2 py_0
sphinxcontrib-jsmath 1.0.1 py_0
sphinxcontrib-qthelp 1.0.2 py_0
sphinxcontrib-serializinghtml 1.1.3 py_0
sphinxcontrib-websupport 1.2.0 py_0
spyder 4.0.1 py37_0
spyder-kernels 1.8.1 py37_0
sqlalchemy 1.3.13 py37he774522_0
sqlite 3.31.1 he774522_0
statsmodels 0.11.0 py37he774522_0
sympy 1.5.1 py37_0
tbb 2020.0 h74a9793_0
tblib 1.6.0 py_0
terminado 0.8.3 py37_0
testpath 0.4.4 py_0
tifffile 2020.2.16 py_0 conda-forge
tk 8.6.8 hfa6e2cd_0
toolz 0.10.0 py_0
tornado 6.0.3 py37he774522_3
tqdm 4.42.1 py_0
traitlets 4.3.3 py37_0
ujson 1.35 py37hfa6e2cd_0
unicodecsv 0.14.1 py37_0
urllib3 1.25.8 py37_0
vc 14.1 h0510ff6_4
vs2015_runtime 14.16.27012 hf0eaf9b_1
watchdog 0.10.2 py37_0
wcwidth 0.1.8 py_0
webencodings 0.5.1 py37_1
werkzeug 1.0.0 py_0
wheel 0.34.2 py37_0
widgetsnbextension 3.5.1 py37_0
win_inet_pton 1.1.0 py37_0
win_unicode_console 0.5 py37_0
wincertstore 0.2 py37_0
winpty 0.4.3 4
wrapt 1.11.2 py37he774522_0
xlrd 1.2.0 py37_0
xlsxwriter 1.2.7 py_0
xlwings 0.17.1 py37_0
xlwt 1.3.0 py37_0
xmltodict 0.12.0 py_0
xz 5.2.4 h2fa13f4_4
yaml 0.1.7 hc54c509_2
yapf 0.28.0 py_0
zeromq 4.3.1 h33f27b4_3
zict 1.0.0 py_0
zipp 2.2.0 py_0
zlib 1.2.11 h62dcd97_3
zstd 1.3.7 h508b16e_0
EDIT: Loaded the from the correct OS
it seems to me that you are using linux. Since the original issue depends on Windows, could you please open a new issue so that them maintainers of this repo can help you get going.
I don't htink you issue is related to this one.
Sorry, I just turned on my PC and responded. Forgot that it was about a Windows issue. I edited my comment to reflex the conda list from my Windows partition.
so there are a few things going on in your system:
I Think until the motions are going through upstream, and finally trickle down, this issue won't get fixed easily, and we will have to wait for new releases of libtiff. That is likely the easiest way.
Maybe use tifffile instead?
I guess I still don't understand the purpose of environments. Do I make a new one for each project? I just thought adding everything to base would allow me pull any module I wanted.
generally, you want to have one for each project.
The issue you are facing is:
In either case, this isn't the right issue to discuss this (discussing environment was not part of the original issue). Do open an other one here, or probably on stack overflow or some other Q&A forum https://forum.image.sc/
Thanks, I'll learn about those issues!
I just installed the patched version and for the moment it seems to work. Thanks, @hmaarrfk !
I have the same issue on windows server 2016 with pillow 7.1.2, libtif 4.1 and conda, when I downgrade to Pillow 6.2.1 and libtiff 4.0.10 the code works.
from PIL import Image
image = Image.open('mytiff.tif')
image.show()
OSError -2
@nkoerb Only libtiff 4.1.0 build h885aae3_4 or later from conda-forge channel works, not from defaults
@kmilos thanks for the info
How to install the patched version and uninstall the current one?
@chibbi30j1
This worked for me:
conda install libtiff=4.1.0=h885aae3_4 -c conda-forge
Most helpful comment
@chibbi30j1
This worked for me: