spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.33k stars 1.61k forks source link

Code does not work in Spyder #17429

Open muriloasouza opened 2 years ago

muriloasouza commented 2 years ago

Issue Report Checklist

Problem Description

A code to read some pdf pages with PyPDF2 library does not work in Spyder (tried in other IDEs like PyCharm or Juptyer Lab, and it works there).

What steps reproduce the problem?

  1. Just run the following code:
import PyPDF2 as pyf 
file = 'MGLU_ER_3T20_POR.pdf'
file_pdf = pyf.PdfFileReader(file)
look_for = """|

Despesas com Vendas"""

i = 1
for page in file_pdf.pages:
    text_page = page.extractText()
    if look_for in text_page:
        print(f'Text present in page {i}')
    i += 1

EDIT: I don't know how to upload the .pdf file to run the code, but it can be downloaded here:

pdf file

It's a pdf with the sales results from a shop from Brazil.

What is the expected output? What do you see instead?

Expected output: The exact page in the PDF file where a string is present.

The string i am looking for is only present in page 10, hence, i expect to see from the print command inside the if condition

Text present in page 10

What i see: Nothing. The code runs, but nothing is printed.

Versions

Dependencies


# Mandatory:
atomicwrites >=1.2.0          :  1.4.0 (OK)
chardet >=2.0.0               :  4.0.0 (OK)
cloudpickle >=0.5.0           :  2.0.0 (OK)
cookiecutter >=1.6.0          :  1.7.3 (OK)
diff_match_patch >=20181111   :  20200713 (OK)
intervaltree >=3.0.2          :  3.1.0 (OK)
IPython >=7.6.0               :  7.30.1 (OK)
jedi >=0.17.2;<0.19.0         :  0.18.1 (OK)
jellyfish >=0.7               :  0.8.9 (OK)
jsonschema >=3.2.0            :  4.2.1 (OK)
keyring >=17.0.0              :  23.4.0 (OK)
nbconvert >=4.0               :  6.3.0 (OK)
numpydoc >=0.6.0              :  1.1.0 (OK)
paramiko >=2.4.0              :  2.8.1 (OK)
parso >=0.7.0;<0.9.0          :  0.8.3 (OK)
pexpect >=4.4.0               :  4.8.0 (OK)
pickleshare >=0.4             :  0.7.5 (OK)
psutil >=5.3                  :  5.8.0 (OK)
pygments >=2.0                :  2.10.0 (OK)
pylint >=2.5.0                :  2.12.2 (OK)
pyls_spyder >=0.4.0           :  0.4.0 (OK)
pylsp >=1.3.1;<1.4.0          :  1.3.2 (OK)
pylsp_black >=1.0.0           :  None (OK)
qdarkstyle =3.0.2             :  3.0.2 (OK)
qstylizer >=0.1.10            :  0.2.1 (OK)
qtawesome >=1.0.2             :  1.1.1 (OK)
qtconsole >=5.2.1;<5.3.0      :  5.2.1 (OK)
qtpy >=1.5.0                  :  1.11.3 (OK)
rtree >=0.9.7                 :  0.9.7 (OK)
setuptools >=49.6.0           :  58.0.4 (OK)
sphinx >=0.6.6                :  4.3.1 (OK)
spyder_kernels >=2.2.0;<2.3.0 :  2.2.0 (OK)
textdistance >=4.2.0          :  4.2.2 (OK)
three_merge >=0.1.1           :  0.1.1 (OK)
watchdog >=0.10.3             :  2.1.6 (OK)
zmq >=17                      :  22.3.0 (OK)

# Optional:
cython >=0.21                 :  None (OK)
matplotlib >=2.0.0            :  3.5.0 (OK)
numpy >=1.7                   :  1.21.4 (OK)
pandas >=1.1.1                :  1.3.4 (OK)
scipy >=0.17.0                :  1.7.3 (OK)
sympy >=0.7.3                 :  None (OK)
ccordoba12 commented 2 years ago

Hey @muriloasouza, thanks for reporting. I can't reproduce this problem on Linux

image

@dalthviz, could you check on Windows? The command to install PyPDF2 is

conda install -c conda-forge pypdf2

Thanks!

dalthviz commented 2 years ago

I was able to replicate this by running the code directly in the console (running from a file works for me i.e I see the print statement):

imagen

Strangely I'm also able to see the print if I only run the for statement but just if I runned before the code as a file:

imagen

If I re-run all the code directly in the console and try to run just the for statement I can't see again the print:

imagen

ccordoba12 commented 2 years ago

Thanks @dalthviz for checking that! This is very strange but I can confirm it on Linux as well.

@muriloasouza, we'll try to take a look at this in the coming months, but it's hard for us to say exactly when it's going to be fixed.

muriloasouza commented 2 years ago

Thank you @ccordoba12!