Skip to content

Commit 4877cf1

Browse files
gdixonGerald Iakobinyi-Pich
and
Gerald Iakobinyi-Pich
authored
fix: upgrades python to 3.7 in docker container (#10662)
* fix: upgrades python to 3.7 in docker container * fix: removes 3.7 repository * Removing any python3.6 and explicitly installing python3.7. Also changed the way how pip is installed. * Updating docker-compose-celery.yml as we have a container running python 3.7 Co-authored-by: Gerald Iakobinyi-Pich <[email protected]>
1 parent f66c23b commit 4877cf1

18 files changed

+95
-91
lines changed

.github/workflows/ci-review.yml

+8-8
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ jobs:
122122
with:
123123
username: ${{ secrets.DOCKER_USERNAME }}
124124
password: ${{ secrets.DOCKER_PASSWORD }}
125-
125+
126126
- name: Set up Docker Buildx
127127
id: buildx
128128
uses: docker/setup-buildx-action@v1
@@ -176,7 +176,7 @@ jobs:
176176
cache-dependency-path: infra/review-env/package-lock.json
177177

178178
# Install pulumi dependencies
179-
# Select the new pulumi stack
179+
# Select the new pulumi stack
180180
- run: |
181181
npm install
182182
pulumi stack select -c gitcoin/review-env/review
@@ -196,7 +196,7 @@ jobs:
196196
work-dir: infra/review-env
197197
env:
198198
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
199-
PULUMI_CONFIG_PASSPHRASE:
199+
PULUMI_CONFIG_PASSPHRASE:
200200
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
201201
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
202202
AWS_REGION: ${{ secrets.AWS_REGION }}
@@ -212,7 +212,7 @@ jobs:
212212
cache-dependency-path: infra/review-pr/package-lock.json
213213

214214
# Install pulumi dependencies
215-
# Select the new pulumi stack
215+
# Select the new pulumi stack
216216
- run: |
217217
npm install
218218
pulumi stack select -c ${{ steps.compute.outputs.pulumi_stack }}
@@ -262,7 +262,7 @@ jobs:
262262

263263
- name: Start migration task
264264
run: |
265-
aws ecs run-task --launch-type FARGATE --task-definition ${{ steps.pulumi.outputs.taskDefinition }} --cluster ${{ steps.pulumi.outputs.clusterId }} --network-configuration "awsvpcConfiguration={subnets=[${{ steps.pulumi-env.outputs.vpcPrivateSubnetId1 }}],securityGroups=[${{ steps.pulumi.outputs.securityGroupForTaskDefinition }}],assignPublicIp=ENABLED}"
265+
aws ecs run-task --launch-type FARGATE --task-definition ${{ steps.pulumi.outputs.taskDefinition }} --cluster ${{ steps.pulumi.outputs.clusterId }} --network-configuration "awsvpcConfiguration={subnets=[${{ steps.pulumi-env.outputs.vpcPrivateSubnetId1 }}],securityGroups=[${{ steps.pulumi.outputs.securityGroupForTaskDefinition }}],assignPublicIp=ENABLED}"
266266
env:
267267
# We need AWS_EC2_METADATA_DISABLED, because: https://github.com/actions/checkout/issues/440
268268
AWS_EC2_METADATA_DISABLED: true
@@ -277,8 +277,8 @@ jobs:
277277
278278
cat <<EOT >> docker_bin/static_files.sh
279279
#!/bin/bash
280-
python3 manage.py bundle
281-
python3 manage.py collectstatic --disable-collectfast
280+
python3.7 manage.py bundle
281+
python3.7 manage.py collectstatic --disable-collectfast
282282
EOT
283283
284284
docker run -v $(pwd)/static_files_to_deploy:/code/app/static -v $(pwd)/docker_bin:/code/app/bin -e DATABASE_URL=${{ steps.pulumi.outputs.rdsConnectionUrl }} -e BUNDLE_USE_CHECKSUM=${BUNDLE_USE_CHECKSUM} ${{ needs.build-and-test.outputs.dockerTag }} sh /code/app/bin/static_files.sh
@@ -306,4 +306,4 @@ jobs:
306306
- [https://${{ steps.compute.outputs.review_domain }}](https://${{ steps.compute.outputs.review_domain }}) \n\
307307
`
308308
})
309-
309+

Dockerfile

+6-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ENV PYTHONDONTWRITEBYTECODE 1
55
ENV DEBIAN_FRONTEND=noninteractive
66

77
# Define packages to be installed
8-
ARG PACKAGES="libpq-dev libxml2 libxslt1-dev libfreetype6 libjpeg-dev libmaxminddb-dev bash git tar gzip libmagic-dev build-essential python-dev libssl-dev python3-dev libsecp256k1-dev libsodium-dev python3-pip"
8+
ARG PACKAGES="libpq-dev libxml2 libxslt1-dev libfreetype6 libjpeg-dev libmaxminddb-dev bash git tar gzip libmagic-dev build-essential python-dev libssl-dev python3.7-dev python3.7 libsecp256k1-dev libsodium-dev python3.7-distutils"
99
ARG BUILD_DEPS="gcc g++ curl postgresql libxml2-dev libxslt-dev libfreetype6 libffi-dev libjpeg-dev autoconf automake libtool make dos2unix libvips libvips-dev"
1010
ARG CHROME_DEPS="fonts-liberation libasound2 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libcairo2 libcups2 libcurl3-gnutls libdrm2 libexpat1 libgbm1 libglib2.0-0 libnspr4 libgtk-3-0 libpango-1.0-0 libx11-6 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 libxshmfence1 xdg-utils"
1111
ARG CYPRESS_DEPS="libgtk2.0-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libxtst6 xauth xvfb"
@@ -19,6 +19,11 @@ RUN apt-get install -y $PACKAGES
1919
RUN apt-get update --fix-missing
2020
RUN apt-get install -y $BUILD_DEPS --fix-missing
2121

22+
23+
RUN curl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py
24+
RUN python3.7 /tmp/get-pip.py
25+
RUN rm /tmp/get-pip.py
26+
2227
# Install google chrome for cypress testing
2328
WORKDIR /usr/src
2429
RUN apt-get update && apt-get install -y wget

Makefile

+17-17
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ WEB_CONTAINER_ID := $$(docker inspect --format="{{.Id}}" ${CONTAINER_NAME})
1313

1414
autotranslate: ## Automatically translate all untranslated entries for all LOCALES in settings.py.
1515
@echo "Starting makemessages..."
16-
@docker-compose exec web python3 app/manage.py makemessages -a -d django -i node_modules -i static -i ipfs
16+
@docker-compose exec web python3.7 app/manage.py makemessages -a -d django -i node_modules -i static -i ipfs
1717
@echo "Starting JS makemessages..."
18-
@docker-compose exec web python3 app/manage.py makemessages -a -d djangojs -i node_modules -i static -i assets/v2/js/lib/ipfs-api.js
18+
@docker-compose exec web python3.7 app/manage.py makemessages -a -d djangojs -i node_modules -i static -i assets/v2/js/lib/ipfs-api.js
1919
@echo "Starting autotranslation of messages..."
20-
@docker-compose exec web python3 app/manage.py translate_messages -u
20+
@docker-compose exec web python3.7 app/manage.py translate_messages -u
2121
# TODO: Add check for messed up python var strings.
2222
@echo "Starting compilemessages..."
23-
@docker-compose exec web python3 app/manage.py compilemessages -f
23+
@docker-compose exec web python3.7 app/manage.py compilemessages -f
2424
@echo "Translation Completed!"
2525

2626
build: ## Build the Gitcoin Web image.
@@ -40,10 +40,10 @@ push: ## Push the Docker image to the Docker Hub repository.
4040
@docker push "${REPO_NAME}"
4141

4242
bundle: ## Create bundles for all `bundle` blocks then compress with webpack
43-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web bash -c "cd /code/app && python3 manage.py bundle && yarn run build"
43+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web bash -c "cd /code/app && python3.7 manage.py bundle && yarn run build"
4444

4545
collect-static: ## Collect newly added static resources from the assets directory.
46-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web bash -c "cd /code/app && python3 manage.py collectstatic -i other --no-input"
46+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web bash -c "cd /code/app && python3.7 manage.py collectstatic -i other --no-input"
4747

4848
compress-images: ## Compress and optimize images throughout the repository. Requires optipng, svgo, and jpeg-recompress.
4949
@./scripts/compress_images.bash
@@ -69,13 +69,13 @@ fresh: ## Completely destroy all compose assets and start compose with a fresh b
6969
@docker-compose down -v; docker-compose up -d --build;
7070

7171
load_initial_data: ## Load initial development fixtures.
72-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py loaddata initial
72+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py loaddata initial
7373

7474
load_clr_grant_match_data:
75-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py loaddata app/app/fixtures/users.json
76-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py loaddata app/app/fixtures/profiles.json
77-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py loaddata initial
78-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py loaddata app/app/fixtures/clr_match.json
75+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py loaddata app/app/fixtures/users.json
76+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py loaddata app/app/fixtures/profiles.json
77+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py loaddata initial
78+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py loaddata app/app/fixtures/clr_match.json
7979

8080
logs: ## Print and actively tail the docker compose logs.
8181
@docker-compose logs -f
@@ -98,26 +98,26 @@ stylelint: ## Run stylelint against the project directory. Requires node, npm, a
9898
tests: pytest eslint stylelint ## Run the full test suite.
9999

100100
migrate: ## Migrate the database schema with the latest unapplied migrations.
101-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py migrate
101+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py migrate
102102

103103
migrations: ## Generate migration files for schema changes.
104-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py makemigrations
104+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py makemigrations
105105

106106
compilemessages: ## Execute compilemessages for translations on the web container.
107-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py compilemessages
107+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py compilemessages
108108

109109
makemessages: ## Execute makemessages for translations on the web container.
110-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py makemessages
110+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py makemessages
111111

112112
get_ipdb_shell: ## Drop into the active Django shell for inspection via ipdb.
113113
@echo "Attaching to container: ($(CONTAINER_NAME)) - ($(WEB_CONTAINER_ID))"
114114
@docker attach $(WEB_CONTAINER_ID)
115115

116116
get_django_shell: ## Open a standard Django shell.
117-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py shell
117+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py shell
118118

119119
get_shell_plus: ## Open a standard Django shell.
120-
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3 app/manage.py shell_plus
120+
@docker-compose exec -e DJANGO_SETTINGS_MODULE="app.settings" web python3.7 app/manage.py shell_plus
121121

122122
pgactivity: ## Run pg_activivty against the local postgresql instance.
123123
@docker-compose exec web scripts/pg_activity.bash

app/manage.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python3
1+
#!/usr/bin/env python3.7
22
"""Define the Django main entry.
33
44
Copyright (C) 2021 Gitcoin Core

bin/celery/worker/run.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
set -euo pipefail
44

5-
cd /code/app; python3 manage.py celery
5+
cd /code/app; python3.7 manage.py celery

bin/ci/cypress-run

+8-8
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ node_modules/.bin/ganache-cli -m "${SECRET_WORDS}" -h 0.0.0.0 &
99
# build assets
1010
mkdir -p app/assets/{static,media}
1111
export STATICFILES_DIRS="${PWD}/app/assets/"
12-
python3 app/manage.py bundle
12+
python3.7 app/manage.py bundle
1313
yarn run build
1414

15-
python3 app/manage.py collectstatic --noinput --disable-collectfast
15+
python3.7 app/manage.py collectstatic --noinput --disable-collectfast
1616

1717
# set up database
18-
python3 app/manage.py migrate
19-
python3 app/manage.py loaddata "${PWD}/app/app/fixtures/users.json"
20-
python3 app/manage.py loaddata "${PWD}/app/app/fixtures/profiles.json"
21-
python3 app/manage.py loaddata "${PWD}/app/app/fixtures/economy.json"
22-
python3 app/manage.py loaddata "${PWD}/app/grants/fixtures/grant_types.json"
18+
python3.7 app/manage.py migrate
19+
python3.7 app/manage.py loaddata "${PWD}/app/app/fixtures/users.json"
20+
python3.7 app/manage.py loaddata "${PWD}/app/app/fixtures/profiles.json"
21+
python3.7 app/manage.py loaddata "${PWD}/app/app/fixtures/economy.json"
22+
python3.7 app/manage.py loaddata "${PWD}/app/grants/fixtures/grant_types.json"
2323

2424
# run app server
25-
python3 app/manage.py runserver 0.0.0.0:8000 &
25+
python3.7 app/manage.py runserver 0.0.0.0:8000 &
2626

2727
# set required env vars and run cypress tests
2828
export NETWORK_NAME=localhost

bin/cypress/ci

+8-8
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ source bin/cypress/vars.sh
1010
# build assets
1111
mkdir -p app/assets/{static,media}
1212
export STATICFILES_DIRS="${PWD}/app/assets/"
13-
python3 app/manage.py bundle
13+
python3.7 app/manage.py bundle
1414
yarn run build
1515

16-
python3 app/manage.py collectstatic --noinput --disable-collectfast
16+
python3.7 app/manage.py collectstatic --noinput --disable-collectfast
1717

1818
# set up database
19-
python3 app/manage.py migrate
20-
python3 app/manage.py loaddata "${PWD}/app/app/fixtures/users.json"
21-
python3 app/manage.py loaddata "${PWD}/app/app/fixtures/profiles.json"
22-
python3 app/manage.py loaddata "${PWD}/app/app/fixtures/economy.json"
23-
python3 app/manage.py loaddata "${PWD}/app/grants/fixtures/grant_types.json"
19+
python3.7 app/manage.py migrate
20+
python3.7 app/manage.py loaddata "${PWD}/app/app/fixtures/users.json"
21+
python3.7 app/manage.py loaddata "${PWD}/app/app/fixtures/profiles.json"
22+
python3.7 app/manage.py loaddata "${PWD}/app/app/fixtures/economy.json"
23+
python3.7 app/manage.py loaddata "${PWD}/app/grants/fixtures/grant_types.json"
2424

2525
# run app server
26-
# python3 app/manage.py runserver 0.0.0.0:8000 &
26+
# python3.7 app/manage.py runserver 0.0.0.0:8000 &
2727

2828
node_modules/.bin/cypress install
2929
# node_modules/.bin/wait-on http://0.0.0.0:8000

bin/docker-command.bash

+17-17
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ if [ "$DISABLE_PROVISION" != "on" ] && [ ! -f /provisioned ] || [ "$FORCE_PROVIS
4545
then
4646
echo "First run - Provisioning the local development environment..."
4747
if [ "$DISABLE_INITIAL_CACHETABLE" != "on" ]; then
48-
python3 manage.py createcachetable
48+
python3.7 manage.py createcachetable
4949
fi
5050

5151
# Build assets using bundle and webpack
5252
if [ "$DISABLE_WEBPACK_ASSETS" != "on" ]; then
5353
yarn install --non-interactive --frozen-lockfile --network-timeout 100000 --verbose
54-
python3 manage.py bundle
54+
python3.7 manage.py bundle
5555
if [ "$ENV" == "prod" ];
5656
then
5757
yarn run build
@@ -62,25 +62,25 @@ then
6262
fi
6363

6464
if [ "$DISABLE_INITIAL_COLLECTSTATIC" != "on" ]; then
65-
python3 manage.py collectstatic --noinput -i other &
65+
python3.7 manage.py collectstatic --noinput -i other &
6666
fi
6767

6868
if [ "$DISABLE_INITIAL_MIGRATE" != "on" ]; then
69-
python3 manage.py migrate
69+
python3.7 manage.py migrate
7070
fi
7171

7272
if [ "$DISABLE_INITIAL_LOADDATA" != "on" ]; then
7373

74-
python3 manage.py loaddata app/fixtures/oauth_application.json
75-
python3 manage.py loaddata app/fixtures/users.json
76-
python3 manage.py loaddata app/fixtures/economy.json
77-
python3 manage.py loaddata app/fixtures/profiles.json
78-
python3 manage.py loaddata app/fixtures/kudos.json
79-
python3 manage.py loaddata app/fixtures/grants.json
80-
python3 manage.py loaddata app/fixtures/dashboard.json
81-
python3 manage.py loaddata app/fixtures/avatar.json
82-
python3 manage.py loaddata app/fixtures/marketing.json
83-
python3 manage.py loaddata app/grants/fixtures/grant_types.json
74+
python3.7 manage.py loaddata app/fixtures/oauth_application.json
75+
python3.7 manage.py loaddata app/fixtures/users.json
76+
python3.7 manage.py loaddata app/fixtures/economy.json
77+
python3.7 manage.py loaddata app/fixtures/profiles.json
78+
python3.7 manage.py loaddata app/fixtures/kudos.json
79+
python3.7 manage.py loaddata app/fixtures/grants.json
80+
python3.7 manage.py loaddata app/fixtures/dashboard.json
81+
python3.7 manage.py loaddata app/fixtures/avatar.json
82+
python3.7 manage.py loaddata app/fixtures/marketing.json
83+
python3.7 manage.py loaddata app/grants/fixtures/grant_types.json
8484

8585

8686
fi
@@ -89,17 +89,17 @@ then
8989
else
9090
# Build assets using bundle and webpack
9191
if [ "$DISABLE_WEBPACK_ASSETS" != "on" ] && [ "$ENV" != "prod" ]; then
92-
python3 manage.py bundle && yarn run webpack &
92+
python3.7 manage.py bundle && yarn run webpack &
9393
fi
9494
fi
9595

9696
if [ "$FORCE_GET_PRICES" = "on" ]; then
97-
python3 manage.py get_prices
97+
python3.7 manage.py get_prices
9898
fi
9999

100100
if [ "$KUDOS_LOCAL_SYNC" = "on" ]; then
101101
bash /code/scripts/sync_kudos_listener_local.bash &
102102
bash /code/scripts/sync_kudos_local.bash &
103103
fi
104104

105-
exec python3 manage.py $GC_WEB_OPTS
105+
exec python3.7 manage.py $GC_WEB_OPTS

bin/review-env-initial-data.bash

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
#!/bin/bash
22

3-
python3 manage.py migrate
3+
python3.7 manage.py migrate
44

5-
python3 manage.py loaddata app/fixtures/oauth_application.json
6-
python3 manage.py loaddata app/fixtures/users.json
7-
python3 manage.py loaddata app/fixtures/economy.json
8-
python3 manage.py loaddata app/fixtures/profiles.json
9-
python3 manage.py loaddata app/fixtures/kudos.json
10-
python3 manage.py loaddata app/fixtures/grants.json
11-
python3 manage.py loaddata app/fixtures/dashboard.json
12-
python3 manage.py loaddata app/fixtures/avatar.json
13-
python3 manage.py loaddata app/fixtures/marketing.json
14-
python3 manage.py loaddata app/grants/fixtures/grant_types.json
5+
python3.7 manage.py loaddata app/fixtures/oauth_application.json
6+
python3.7 manage.py loaddata app/fixtures/users.json
7+
python3.7 manage.py loaddata app/fixtures/economy.json
8+
python3.7 manage.py loaddata app/fixtures/profiles.json
9+
python3.7 manage.py loaddata app/fixtures/kudos.json
10+
python3.7 manage.py loaddata app/fixtures/grants.json
11+
python3.7 manage.py loaddata app/fixtures/dashboard.json
12+
python3.7 manage.py loaddata app/fixtures/avatar.json
13+
python3.7 manage.py loaddata app/fixtures/marketing.json
14+
python3.7 manage.py loaddata app/grants/fixtures/grant_types.json

docker-compose-celery.yml

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ services:
99
max-file: '10'
1010
driver: json-file
1111

12-
# image: gitcoin/web:034f6cde3c
13-
image: gitcoin/web:817ff194e7
12+
image: gitcoin/web:e363cee2a4
1413

1514
volumes:
1615
# - .:/code

docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ services:
5151
- PYTHONUNBUFFERED=1
5252
- PYTHONIOENCODING=utf8
5353
- PYTHONPATH=/code/app
54-
- PYTHONPATH=/usr/bin/python3
54+
- PYTHONPATH=/usr/bin/python3.7
5555
env_file:
5656
- app/app/.env
5757
build:

docs/CONTRIBUTING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ All assets that will be used as static resources must be placed into their appro
389389

390390
Q: `I've added the new assets to the appropriate directory, but can't seem to use them. How do I make Django recognize my newly added assets?`
391391

392-
Run: `make collect-static` if using Docker or `cd app; python3 manage.py collectstatic -i other` for virtualenv/local setup.
392+
Run: `make collect-static` if using Docker or `cd app; python3.7 manage.py collectstatic -i other` for virtualenv/local setup.
393393

394394
Additionally, you can check out the [Django Managing Static Files Documentation](https://docs.djangoproject.com/en/2.0/howto/static-files/)
395395

docs/RUNNING_LOCALLY.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
```shell
66

7-
~/$ brew install libmaxminddb automake pkg-config libtool libffi gmp python3 openssl libvips libvips-dev libvips-tools
7+
~/$ brew install libmaxminddb automake pkg-config libtool libffi gmp python3.7 openssl libvips libvips-dev libvips-tools
88
~/$ git clone https://github.com/gitcoinco/web.git
99
~/$ cd web/app
1010
~/web/app$ cp app/local.env app/.env

0 commit comments

Comments
 (0)