TL;DR: The Solution
I remember a year ago, when I could not solve this problem for a different project so I ended up using a Docker container to emulate a simple linux environment to use
psycopg2. I'm a bit older and wiser now, so when faced with the same problem for my current project, I dug around all day today figuring out how to install
psycopg2 in an M1 Mac environment. I tried many solutions that may have worked for others somehow, but ultimately did not work me. It turns out that the solution was the most vanilla installation I've done since I started using my M1 Mac Air.
pipx, and all other versions of
pythonexcept your system's python.
- Download the latest version of python from the python website. At the time of writing, I was downloading python
3.10.4so look around to see if there is an even more updated version.
- Run the installer. Once it's finished, if you check your Applications, you should have your new version of python there. To test your new installation, run
python3 --versionin a fresh terminal.
pip3 install psycopg2-binary
Optionally, you can also install PostgreSQL on your M1 mac as well.
- Download the postgreSQL installation from the official website. At the time of writing, the most recent version, PostgreSQL 14, looks like it has the most support for the M1 Mac architecture.
- Run the installation wizard. The default location for my installation was
/Library/PostgreSQL/14, so I just used that.
- Add PostgreSQL bin to PATH in your
.zshrcfile. It should look like the following:
Alternatively, you can can use this command if your installation was made in the same folder as mine:
echo 'export PATH="/Library/PostgreSQL/14/bin:$PATH"' >> ~/.zshrc
- Open a new terminal and run
pg_configin the command line. Your configuration should come up.
- To get started on your Django application, PostgreSQL offers a brief tutorial, which is actually useful later on when you're replacing the initial SQLite database in settings.
Avoid These Potential Solutions
Avoid using a version manager like
asdf. If you install
psycopg2 with this configuration, you will likely run into architectural issues with
Homebrew or anything that was installed with
libpq, and other TLS/SSL packages will not be sufficient substitutes for the lack of SSL support for Python. Even adding a symlink to the specific libraries needed will not be sufficient enough to solve the problem.
As I mentioned in the introduction, you can use Docker to containerize your application and ultimately install
psycopg2. But it's not the simplest or the fastest solution. If you must do it this way, here a few helpful links to the Github project that I was working on at the time to help you get started:
- My Tutorial of getting started with Docker
Dockerfileused for the
docker-compose.ymlfile used for the Frontend and Backend
I hope this helps. It appears that Apple's M1 chip has received a ton of support from the developer community over the past year, which makes me less inclined to sell my Mac Air for a Framework laptop.
I can only speculate that Apple wants to eliminate the need for 3rd-party package managers and version managers like
asdf, respectively. The newest update, Monterey 12.3, is hostile to 3rd party programs especially if Xcode is not installed. It's not impossible to install and use 3rd-party applications but there will be security pop-up that needs a little more than a password to get around..
Top comments (0)