Olá, muito obrigado pelas dicas, eu já havia tentado tudo isso mas infelizmente não funcionou.
Desinstalei e reinstalei todas as bibliotecas novamente na venv e ainda nao resolveu.
Aí resolvi meter o louco mesmo e instalei todas as bibliotecas fora da venv, no ambiente global mesmo, rodei o runserver no ambiente global e funcionou.
Acredito que o problema é que está faltando alguma biblioteca na venv mas não sei qual é. Reinstalei todas na venv utilizando o requirements.txt dispnibilizado no github da Alura e mesmo assim não funcionou.
requirements.txt:
asgiref==3.5.2
boto3==1.26.58
botocore==1.29.58
Django==4.1
django-storages==1.13.2
jmespath==1.0.1
Pillow==9.3.0
python-dateutil==2.8.2
python-dotenv==0.20.0
s3transfer==0.6.0
six==1.16.0
sqlparse==0.4.2
urllib3==1.26.14
settings.py:
INSTALLED_APPS = [
'storages',
...
#(código omitido)
]
...
#(código omitido)
...
# AWS Configuraçao:
AWS_ACCESS_KEY_ID = (my key)
AWS_SECRET_ACCESS_KEY = (my secret key)
AWS_STORAGE_BUCKET_NAME = (my bucket)
AWS_S3_CUSTOM_DOMAIN = f'{AWS_STORAGE_BUCKET_NAME}.s3.sa-east-1.amazonaws.com'
AWS_DEFAULT_ACL = 'public-read'
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400'
}
AWS_LOCATION = 'static'
AWS_QUERYSTRING_AUTH = False
AWS_HEADERS = {
'Access-Control-Allow-Origin': '*',
}
# Static files (CSS, JavaScript, Images)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'
STATIC_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'setup/static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# Media:
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = f'https://{AWS_S3_CUSTOM_DOMAIN}/media/'
Erro completo que aparece quando rodo na venv:
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "(diretório python)\Python\Python311\Lib\threading.py", line 1038, in _bootstrap_inner self.run()
File "(diretório python)\Python\Python311\Lib\threading.py", line 975, in run
self._target(*self._args, **self._kwargs)
File "(diretório projeto)\venv\Lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File (diretório projeto)\venv\Lib\site-packages\django\core\management\commands\runserver.py", line 125, in inner_run
autoreload.raise_last_exception()
File "(diretório projeto)\venv\Lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "(diretório projeto)\venv\Lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "(diretório projeto)\venv\Lib\site-packages\django\apps\registry.py", line 91, in populate
app_config = AppConfig.create(entry)
^^^^^^^^^^^^^^^^^^^^^^^
File "(diretório projeto)\venv\Lib\site-packages\django\apps\config.py", line 193, in create
import_module(entry)
File "(diretório projeto)\Python\Python311\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'storages'
Gostaria que rodasse na venv pois sei que é a boa pratica para um desenvolvedor, mas ao menos estou conseguindo finalizar o projeto no ambiente global.