12
respostas

Refiz a env e reinstalei as packages

Porém o erro ainda persiste

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

(fibonacci_env) ➜  alura-space git:(master) ✗ python manage.py migrate                       
Traceback (most recent call last):
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/core/management/base.py", line 335, in execute
    output = self.handle(*args, **options)
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 79, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/migrations/executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/migrations/loader.py", line 206, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 61, in applied_migrations
    if self.has_table():
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 44, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 255, in cursor
    return self._cursor()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 232, in _cursor
    self.ensure_connection()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 216, in ensure_connection
    self.connect()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/base/base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 162, in get_new_connection
    conn = Database.connect(**conn_params)
TypeError: argument 1 must be str, not PosixPath

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 365, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/core/management/base.py", line 301, in run_from_argv
    connections.close_all()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/utils.py", line 225, in close_all
    connection.close()
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 190, in close
    if not self.is_in_memory_db():
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 287, in is_in_memory_db
    return self.creation.is_in_memory_db(self.settings_dict['NAME'])
  File "/home/mmaia/projetos/alura-space/fibonacci_env/lib/python3.5/site-packages/django/db/backends/sqlite3/creation.py", line 13, in is_in_memory_db
    return database_name == ':memory:' or 'mode=memory' in database_name
TypeError: argument of type 'PosixPath' is not iterable

Alguém pode me ajudar?

12 respostas

ultima tentativa de hoje... É como se eu não conseguisse dar o import e minha venv tivesse algum problema

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá Meliza, tudo bem com você?

Há indícios de que o erro de tipo apresentado (TypeError) está sendo levantado devido à declaração da chave 'NAME' da base de dados no arquivo setup/settings.py. Essa configuração espera receber um valor do tipo string, mas está recebendo um valor do tipo PosixPath.

Para corrigir esse erro, podemos transformar o valor atribuído em uma string usando a função str(). Ficando como apresentado abaixo.

'NAME': str(BASE_DIR / 'db.sqlite3'),

Peço que acesse o arquivo setup/settings.py, localize a constante DATABASES que possui a configuração da base de dados e deixe o código como apresentado abaixo.


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': str(BASE_DIR / 'db.sqlite3'),
    }
}

Após realizar a modificação, salve o arquivo setup/settings.py e realize a criação da migração e a migração executando os comandos abaixo no terminal aberto na pasta do projeto.

python manage.py makemigrations
python manage.py migrate

Inicie o servidor.

python manage.py runserver

Também analisando a mensagem de log, creio que você esteja utilizando o Python 3.5, fazer o uso dessa versão com versões atuais do Django e outras bibliotecas podem gerar erros futuros de compatibilidade, recomendo que use a mesma versão utilizadas no curso (Python 3.10) assim será evitado erros de compatibilidades.

Você pode seguir os passos descritos na aula Preparando o ambiente para realizar a instalação da versão atual do Python e Django.

Peço que teste os passos propostos acima. Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Boa noite,

executei todos processos recomendados, mas não consegui fazer a migração:

Ele ainda dá o erro de import do dotenv

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Porém ao criar a venv ela é criada com o python 3.5 e não 3.10...

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Outra coisa que percebi é que mesmo criando a venv com o o comando:

virtualenv --python=python3 venv 

quando utilizo o:

virtual venv

aparece como python 2

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

e observando mesmo a bin como python com 3.10 ainda consta como 3.5 no aviso

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Olá Meliza, tudo bem com você?

Agradeço pelo retorno. O novo erro apresentado é um erro de importação (ImportError), ele está informando que a biblioteca dotenv não foi encontrada, como ocorreu a criação de um novo ambiente virtual, será necessário realizar uma nova instalação desta biblioteca. Esse erro será corrigido com a instalação da biblioteca python-dotenv.

Quanto a criação de um ambiente virtual no Python na versão 3.10 podemos fazer o uso da biblioteca venv, essa biblioteca é nativa no Python nas versões atuais. Peço que crie um ambiente virtual utilizando a biblioteca venv seguindo os passos apresentados abaixo.

  • Abra o terminal na pasta do seu projeto e desative o ambiente virtual atual executando o comando abaixo no terminal.

      deactivate
  • Exclua a pasta venv.

  • Após a exclusão, execute o comando abaixo no terminal para a criação de um novo ambiente.

      python3 -m venv venv
  • Ative o ambiente virtual executando um dos comandos abaixo no terminal aberto na pasta do projeto conforme o seu sistema operacional.

    • Sistema Mac e Linux
      source venv/bin/activate
    • Sistema Windows
      venv/Scripts/activate
  • Instale as bibliotecas necessárias para a execução do projeto. Execute os comandos abaixo no terminal.

      pip install django
      pip install python-dotenv
  • Realize a criação da migração e a migração executando os comandos abaixo no terminal aberto na pasta do projeto.

      python manage.py makemigrations
      python manage.py migrate
  • Inicie o servidor.

      python manage.py runserver
  • Neste ponto basta acessar a página inicial da aplicação no navegador.

Método alternativo

Uma segunda alternativa será utilizar a biblioteca virtualenv fornecendo a versão completa do Python na opção --python, por exemplo: --python=python3.10 assim o ambiente virtual criado será na versão 3.10.

virtualenv --python=python3.10 venv

Peço que teste os pontos listados acima. Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá!

Sobre os passos de Django e Dotenv foram tudo ok

Porém voltamos ao erro de PATH (e venv no 3.5) tentei alterar para 3.10 nesse seguinte último comando, mas deu mais erros de importação então segui os seus primeiros passos.

Porém agora o erro continua no PosixPath, mesmo com a alteração sendo feita nos setting.py

Poderia me ajudar?

python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 325, in execute
    settings.INSTALLED_APPS
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 79, in __getattr__
    self._setup(name)
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 66, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 157, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 673, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/mmaia/projetos/alura-space/setup/settings.py", line 61, in <module>
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
  File "/usr/lib/python3.5/posixpath.py", line 89, in join
    genericpath._check_arg_types('join', a, *p)
  File "/usr/lib/python3.5/genericpath.py", line 143, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'PosixPath'

Olá Meliza.

Quando estamos na área de desenvolvimento o surgimento de erros será algo comum, sei que está dando muitos erros, mas vou te acompanhar e ajudar até chegarmos em uma solução. Caso a próxima solução não tenha sucesso, vou continuar te ajudando.

Peço que acesse o arquivo setup/setting.py e troque a declaração da constante BASE_DIR, deixando-a como apresentado abaixo.

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

Salve o arquivo setup/setting.py e realize a execução dos comandos para a criação da migração (python manage.py makemigrations) e a migração (python manage.py migrate).

Peço que teste a modificação da declaração da constante BASE_DIR e verifique se obteve êxito.

Fico no aguardo.

Fico no aguardo e à disposição

Obrigada pela disposição! Tentei de tudo, mas ainda sim não obtive exito... Segue o que ocorreu na migração:

python manage.py makemigrations                          
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 325, in execute
    settings.INSTALLED_APPS
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 79, in __getattr__
    self._setup(name)
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 66, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/mmaia/projetos/alura-space/venv/lib/python3.5/site-packages/django/conf/__init__.py", line 157, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 673, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/home/mmaia/projetos/alura-space/setup/settings.py", line 84, in <module>
    'NAME': str(BASE_DIR / 'db.sqlite3'),
TypeError: unsupported operand type(s) for /: 'str' and 'str'

Olá Meliza, tudo bem com você?

O erro apresentado é um erro de tipo (TypeError) e é informado que ele está sendo levantado devido a declaração usada para a chave NAME na constante DATABASES. Será necessário fazer modificar a declaração da chave NAME, deixo abaixo duas alternativas.

Alternativa 1

Peço que no o arquivo setup/settings.py localize a constante DATABASES que possui a configuração da base de dados e deixe o código como apresentado abaixo.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

Salve o arquivo setup/settings.py e realize a execução dos comandos para a criação da migração (python manage.py makemigrations) e a migração (python manage.py migrate).

Alternativa 2

Caso a primeira alternativa não funcione. Peço que no o arquivo setup/settings.py localize a constante DATABASES que possui a configuração da base de dados e deixe o código como apresentado abaixo.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': str(BASE_DIR) +  "/db.sqlite3",
    }
}

Salve o arquivo setup/settings.py e realize a execução dos comandos para a criação da migração (python manage.py makemigrations) e a migração (python manage.py migrate).

Peço que teste as propostas acima e verifique se obtém êxito.

Fico no aguardo e à disposição

Funcionou aqui! Agora vou ajustar o css :D Muitissimo obrigada!

Oii Meliza, tudo bem com você?

Fico feliz em saber que tenha funcionado, esse retorno informando é muito importante.

Caso no decorrer dos estudos surjam novas dúvidas, você pode estar contando sempre com o fórum Alura, basta criar uma nova postagem no fórum.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Fico à disposição.

Abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software