Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] Migrate retornando erro

No Windows, logo após criar um venv, ativá-lo, instalar o requirements.txt com a versão mais atual do typed-ast==1.5.5, rodar makemigrations tento rodar o migrate (2x) e resulta no seguinte erro:

(venv) PS C:\GitHub\fenix\python_django_drf_clientes-master> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, clientes, contenttypes, sessions
Running migrations:
  No migrations to apply.
Traceback (most recent call last):
  File "C:\GitHub\fenix\python_django_drf_clientes-master\manage.py", line 22, in <module>
    main()
  File "C:\GitHub\fenix\python_django_drf_clientes-master\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\core\management\base.py", line 341, in run_from_argv
    connections.close_all()
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\db\utils.py", line 230, in close_all
    connection.close()
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 261, in close
    if not self.is_in_memory_db():
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 380, in is_in_memory_db
    return self.creation.is_in_memory_db(self.settings_dict['NAME'])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\GitHub\fenix\python_django_drf_clientes-master\venv\Lib\site-packages\django\db\backends\sqlite3\creation.py", line 12, in is_in_memory_db
    return database_name == ':memory:' or 'mode=memory' in database_name
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: argument of type 'WindowsPath' is not iterable
2 respostas

Olá, Antonio!

Pelo que parece, você está enfrentando um problema com a versão do Django que está utilizando. O erro TypeError: argument of type 'WindowsPath' is not iterable é um bug conhecido que ocorre em versões específicas do Django quando executado em um ambiente Windows.

A causa desse erro é que o Django está tentando iterar em um objeto do tipo WindowsPath, que não é iterável. Isso geralmente acontece quando o Django tenta verificar se o banco de dados SQLite está em memória.

A solução mais simples para este problema é tentar atualizar a versão do Django para a versão 3.1.7 ou superior, onde este bug foi corrigido. Você pode fazer isso com o seguinte comando:

pip install --upgrade django

Depois de atualizar, tente rodar o migrate novamente.

Lembre-se de verificar a versão atual do Django com o comando python -m django --version antes de tentar atualizar, para garantir que a atualização ocorra corretamente.

Espero ter ajudado e bons estudos!

solução!

Obrigado, Renan Lima!

A sua resposta me fez chegar mais perto da solução e com mais alguns passos eu finalmente resolvi o problema. Apenas atualizando o Django eu passei a receber outra mensagem de erro. Como a sua resposta me fez crer que se tratavam de erros por versões antigas ou conflitos de versões eu resolvi o problema realizando os seguintes passos:

  1. pip uninstall -r requirements.txt
  2. apaguei todas as versões de libs do arquivo requirements.txt para que ele pegasse as versões mais recentes das libs
  3. pip install -r requirements.txt

Isso bastou para que os comandos python manage.py makemigrations e python manage.py migrate rodassem com sucesso.

Após isso, gerei uma nova versão do arquivo requirements.txt com o comando pip freeze > requirements.txt resultando no seguinte arquivo que pode ser utilizado por outros alunos para facilitar a atualização das libs:

asgiref==3.7.2
astroid==2.15.8
colorama==0.4.6
dill==0.3.7
Django==4.2.5
djangorestframework==3.14.0
Faker==19.6.2
isort==5.12.0
lazy-object-proxy==1.9.0
mccabe==0.7.0
platformdirs==3.10.0
pylint==2.17.6
python-dateutil==2.8.2
pytz==2023.3.post1
six==1.16.0
sqlparse==0.4.4
toml==0.10.2
tomlkit==0.12.1
typed-ast==1.5.5
tzdata==2023.3
validate-docbr==1.10.0
wrapt==1.15.0

Novamente agradeço pela resposta rápida! Abs!