Permission denied when activating venv

You need to run

. venv/bin/activate

or

source venv/bin/activate

The activate file is deliberately not executable because it must be sourced.

It must be sourced because it needs to make changes to the environment. If it is run as a script, it will only make changes to the environment of the child process used to run the script.

Someone in the comments asked about the . command. From the man page for bash:

    .  filename [arguments]
   source filename [arguments]
          Read  and execute commands from filename in the current shell
          environment and return the exit status of the last command
          executed from filename.

In short, . is a shell built-in that means the same thing as the source built-in.


On my VSC, I used these and it worked.

python3 -m venv .venv

source .venv/bin/activate

Tags:

Python

Macos