DEV Community

Cover image for Resolvendo uma dependência com poetry dependency management
Jhonathan Paulo Banczek
Jhonathan Paulo Banczek

Posted on

1

Resolvendo uma dependência com poetry dependency management

Usando o Poetry para gerenciar um pequeno projeto em Python, me deparo com o seguinte erro ao instalar uma dependência:

comando:

$ poetry add newspaper3k

Using version ^0.2.8 for newspaper3k

Updating dependencies
Resolving dependencies... (1.3s)

[ReadError]
file could not be opened successfully

Falhou ao instalar a dependência.

Executei o mesmo comando acima passando -vvv para exibir as mensagens de debug, omiti parte do debug com [...] pra não ficar muito extenso:

$ poetry add newspaper3k -vvv
Using virtualenv: 

[...]
PyPI: 18 packages found for newspaper3k *
Using version ^0.2.8 for newspaper3k

Updating dependencies
Resolving dependencies...

[...]

PyPI: 1 packages found for newspaper3k >=0.2.8,<0.3.0

[...]

   1: selecting feedfinder2 (0.0.4)
PyPI: Getting info for feedparser (5.2.1) from PyPI
PyPI: No dependencies found, downloading archives
PyPI: Downloading sdist: feedparser-5.2.1.tar.bz2
   1: Version solving took 0.791 seconds.
   1: Tried 1 solutions.

[ReadError]
file could not be opened successfully

Traceback (most recent call last):

[...]

"/home/jhoonb/.poetry/lib/poetry/_vendor/py3.8/pkginfo/sdist.py", line 26, in _get_archive
    archive = tarfile.TarFile.open(fqn)
  File "/home/jhoonb/.asdf/installs/python/3.8.2/lib/python3.8/tarfile.py", line 1604, in open
    raise ReadError("file could not be opened successfully")

O instalador tentou baixar e abrir a seguinte lib feedparser-5.2.1.tar.bz2, não conseguiu e retornou erro file could not be opened successfully.

a lib newspaper3k depende de feedparser, mas por algum motivo quebrou na instalação.

Tentando instalar a dependência que quebrou via poetry:

$ poetry add feedparser -vvv 

[...]

PyPI: 12 packages found for feedparser *
Using version ^5.2.1 for feedparser

Updating dependencies
Resolving dependencies...

[...]

PyPI: 1 packages found for feedparser >=5.2.1,<6.0.0
PyPI: Getting info for feedparser (5.2.1) from PyPI
PyPI: No dependencies found, downloading archives
PyPI: Downloading sdist: feedparser-5.2.1.tar.bz2
   1: Version solving took 0.759 seconds.
   1: Tried 1 solutions.

[ReadError]
file could not be opened successfully

Traceback (most recent call last):
  File 

[...]


"/home/jhoonb/.asdf/installs/python/3.8.2/lib/python3.8/tarfile.py", line 1604, in open
    raise ReadError("file could not be opened successfully")

Não conseguimos instalar a lib. Mas tentando instalar pelo pip a instalação é concluída:

$ pip3 install feedparser      
pip3 install feedparser  
Collecting feedparser
  Using cached feedparser-5.2.1.tar.gz (252 kB)
Building wheels for collected packages: feedparser
  Building wheel for feedparser (setup.py) ... done
  Created wheel for feedparser: filename=feedparser-5.2.1-py3-none-any.whl size=44939 [...]
Successfully built feedparser
Installing collected packages: feedparser
Successfully installed feedparser-5.2.1

O problema deve ser no poetry, vamos tentar instalar essa dependência apontando para github, no branch master, porque por padrão o branch é develop:

$ poetry add git+https://github.com/kurtmckee/feedparser.git#master

Updating dependencies
Resolving dependencies... (14.3s)

Writing lock file


Package operations: 1 install, 0 updates, 0 removals

  - Installing feedparser (5.2.1 cf41851)

Instalado com sucesso! Agora vamos tentar instalar a lib newspaper3k:

$ poetry add newspaper3k                                           
Using version ^0.2.8 for newspaper3k

Updating dependencies
Resolving dependencies... (16.2s)

Writing lock file


Package operations: 23 installs, 0 updates, 0 removals

  - Installing certifi (2020.6.20)
  - Installing chardet (3.0.4)
  - Installing idna (2.10)
  - Installing urllib3 (1.25.9)
  - Installing requests (2.24.0)
  - Installing soupsieve (1.9.6)
  - Installing beautifulsoup4 (4.9.1)
  - Installing click (7.1.2)
  - Installing joblib (0.16.0)
  - Installing regex (2020.6.8)
  - Installing requests-file (1.5.1)
  - Installing tqdm (4.47.0)
  - Installing cssselect (1.1.0)
  - Installing feedfinder2 (0.0.4)
  - Installing jieba3k (0.35.1)
  - Installing lxml (4.5.1)
  - Installing nltk (3.5)
  - Installing pillow (7.2.0)
  - Installing python-dateutil (2.8.1)
  - Installing pyyaml (5.3.1)
  - Installing tinysegmenter (0.3)
  - Installing tldextract (2.2.2)
  - Installing newspaper3k (0.2.8)

Conseguimos instalar! Tivemos que adicionar a dependência feedparser diretamente em nosso projeto apontando para git em branch master.

Fica em aberto a questão do poetry não conseguir instalar a lib newspaper3k com a dependência diretamente. O pip conseguiu resolver o problema.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs