Adding Python 3.11 to `$PATH`
I built Python 3.11 from source (from GitHub python/cpython branch "3.11").
Here is what I did (after downloading the repo as ZIP)
cd Downloads
7z x cpython-3.11.zip
cd cpython-3.11
chmod +x configure
./configure
make
Everything is okay, but I can run Python 3.11 only in the cpython-3.11
directory because it is not added to $PATH
. And here is the problem.
What I tried :
- Rename the file
~/cpython-3.11/python
to~/cpython-3.11/python3.11
- Open the
.bashrc
file located in/home/[username]/
- Added that line of code at the end:
(Note that my user name isexport PATH="/home/hg/cpython-3.11/python3.11:$PATH
hg
, cf. HGStyle).
So I restarted my terminal and it does not work. Can someone help please ?
- I tried to do the same thing on the
.profile
file but it still does not work. - I tried to remove the quote marks but it still does not work.
2 answers
You are accessing this answer with a direct link, so it's being shown above all other answers regardless of its score. You can return to the normal view.
The usual way is to specify an installation location with
./configure --prefix="$HOME/python"
... and then make install
after make
.
If you don't specify a --prefix
argument to configure
, it typically defaults to /usr/local
(so make install
will install python
as /usr/local/bin/python
which should already be on your PATH
, and libraries somewhere like /usr/local/lib/python/3.11
).
0 comment threads
There are two possible issues that I can see.
First, as already brought up in a comment thread, it appears that the export
command you added in your .bashrc
is missing a final "
. This should cause an error message to be printed when starting a shell, making it an easy error to spot.
Second and more likely to be the problem, $PATH
points to directories to search for executable files; it does not point directly at specific executable files. So if you have a python
binary originally in the directory ~/cpython-3.11
, then within that directory do a mv python python3.11
, then want to be able to start it by giving only its name (not a full path) you will need to add the directory it is in (~/cpython-3.11
) to your $PATH
.
Therefore, you should probably use something like
export PATH="~/cpython-3.11:$PATH"
in your .bashrc
in order to get the results you want.
Note that while changing $PATH
should be sufficient to make the shell invalidate cached command paths, you may need to start a whole new bash shell for it to actually pick up on the change. You can use type -a python3.11
to get a list of all locations which your shell currently considers candidates for executing as a bare python3.11
, ordered by preference.
4 comment threads