I am working on mac OS X Yosemite, version 10.10.3.
I installed python2.7 and pip using macport as done in //johnlaudun.org/20150512-installing-and-setting-pip-with-macports/
I can successfully install packages and import them inside my python environment and python scripts. However any executable associated with a package that can be called from the command line in the terminal are not found.
Does anyone know what might be wrong? [More details below]
For example while installing a package called "rosdep" as instructed in //wiki.ros.org/jade/Installation/Source
I can run: sudo pip install -U rosdep
which installs without errors and corresponding files are located in /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
However if I try to run : sudo rosdep init
, it gives an error : "sudo: rosdep: command not found"
This is not a package specific error. I get this for any package installed using pip on my computer. I even tried adding
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
to my $PATH
. But the executables are not
found on the command line, even though the packages work perfectly from within python.
ritesh
8973 gold badges11 silver badges31 bronze badges
asked Mar 9, 2016 at 17:38
Sanket_DiwaleSanket_Diwale
2,2492 gold badges11 silver badges15 bronze badges
3
I know the question asks about macOS, but here is a solution for Linux users who arrive here via Google.
I was having the issue described in this question, having installed the pdfx package via pip.
When I ran it however, nothing...
pip list | grep pdfx
pdfx [1.3.0]
Yet:
which pdfx
pdfx not found
The problem on Linux is that pip install ...
drops scripts into ~/.local/bin
and this is not on the default Debian/Ubuntu $PATH
.
Here's a GitHub issue going into more detail: //github.com/pypa/pip/issues/3813
To fix, just add
~/.local/bin
to your $PATH
, for example by adding the following line to your .bashrc
file:
export PATH="$HOME/.local/bin:$PATH"
After that, restart your shell and things should work as expected.
answered Dec 21, 2019 at 13:51
James HibbardJames Hibbard
15.6k11 gold badges59 silver badges70 bronze badges
0
On macOS with the default python installation you need to add /Users//Library/Python/2.7/bin/
to your $PATH.
Add this to your .bash_profile:
export PATH="/Users//Library/Python/2.7/bin:$PATH"
That's where pip installs the executables.
Tip: For non-default python version which python
to find the location of your python installation and replace that portion in the path above. [Thanks for the hint Sanket_Diwale]
answered Apr 12, 2017 at 11:58
0
Solution
Based on other answers, for linux
and mac
you can run the following:
echo "export PATH=\"`python3 -m site --user-base`/bin:\$PATH\"" >> ~/.bashrc
source ~/.bashrc
instead of python3
you can use any other link to python version: python
, python2.7
, python3.6
, python3.9
, etc.
instead of .bashrc, choose the rc file from your favourite shell.
Explanation
In order to know where the user packages are installed in the current OS [win, mac, linux], we run:
python3 -m site --user-base
We know that the scripts go to the bin/
folder where the packages are installed.
So we concatenate the paths:
echo `python3 -m site --user-base`/bin
Then we export that to an environment variable.
export PATH=\"`python3 -m site --user-base`/bin:\$PATH\"
Finally, in order to avoid repeating the export command we add it to our .bashrc
file and we run source
to run the new changes, giving us the suggested solution mentioned at the beginning.
answered Jun 2, 2020 at 11:48
WillemoesWillemoes
5,0342 gold badges29 silver badges26 bronze badges
0
check your $PATH
tox
has a command line mode:
audrey:tests jluc$ pip list | grep tox
tox [2.3.1]
where is it?
[edit: the 2.7
stuff doesn't matter much here, sub in any 3.x
and pip's behaving pretty much the same way]
audrey:tests jluc$ which tox
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox
and what's in my $PATH?
audrey:tests jluc$ echo $PATH
/opt/chefdk/bin:/opt/chefdk/embedded/bin:/opt/local/bin:..../opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin...
Notice the /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin? That's what allows finding my pip-installed stuff
Now, to see where things are from Python, try doing this [substitute rosdep
for tox
].
$python
>>> import tox
>>> tox.__file__
that prints out:
'/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc'
Now, cd to the directory right above lib
in the above. Do you see a bin directory? Do you see rosdep
in that bin? If so try adding the bin
to your $PATH.
audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7
audrey:2.7 jluc$ ls -1
output:
Headers
Python
Resources
bin
include
lib
man
share
answered Mar 9, 2016 at 17:54
JL PeyretJL Peyret
9,6092 gold badges43 silver badges64 bronze badges
0
If you're installing using --user
[e.g. pip3.6 install --user tmuxp
],
it is possible to get the platform-specific user install directory from Python itself using the site
module. For example, on macOS:
$ python2.7 -m site --user-base
/Users/alexp/Library/Python/2.7
By appending /bin
to this, we now have the path where package executables will be installed. We can dynamically populate the PATH in your shell's rc file based on the output; I'm using bash, but with any luck this is portable:
# Add Python bin directories to path
python3.6 -m site &> /dev/null && PATH="$PATH:`python3.6 -m site --user-base`/bin"
python2.7 -m site &> /dev/null && PATH="$PATH:`python2.7 -m site --user-base`/bin"
I use the precise Python versions to reduce the chance of the executables just "disappearing" when Python upgrades a minor version, e.g. from 3.5 to 3.6. They'll disappear because, as can be seen above, the user installation path may include the Python version. So while python3
could point to 3.5 or 3.6, python3.6
will always point to 3.6. This needs to be kept in mind when installing further packages, e.g. use pip3.6
over pip3
.
If you don't mind the idea of packages
disappearing, you can use python2
and python3
instead:
# Add Python bin directories to path
# Note: When Python is upgraded, packages may need to be re-installed
# or Python versions managed.
python3 -m site &> /dev/null && PATH="$PATH:`python3 -m site --user-base`/bin"
python2 -m site &> /dev/null && PATH="$PATH:`python2 -m site --user-base`/bin"
answered Jan 22, 2018 at 11:39
Alex PalmerAlex Palmer
1,1399 silver badges8 bronze badges
0
The Installing Packages tutorial on python.org describes how to locate the binary directory:
On Windows
You can find the user base binary directory by running python
-m site --user-site
and replacingsite-packages
withScripts
. For example, this could returnC:\Users\Username\AppData\Roaming\Python36\site-packages
so you would need to set your PATH to includeC:\Users\Username\AppData\Roaming\Python36\Scripts
.
On Linux and macOS
On Linux and macOS you can find the user base binary directory by running python
-m site --user-base
and addingbin
to the end. For example, this will typically print~/.local
[with~
expanded to the absolute path to your home directory] so you’ll need to add~/.local/bin
to your PATH.
Paul Wintz
2,2781 gold badge18 silver badges31 bronze badges
answered Dec 15, 2020 at 19:07
0
I stumbled upon this question because I created, successfully built and published a PyPI Package, but couldn't execute it after installation. The $PATH
variable was correctly set.
In my case the problem was that I hadn't set the entry_point
in the setup.py
file:
entry_points = {'console_scripts':
['YOUR_CONSOLE_COMMAND=MODULE_NAME.FILE_NAME:FUNCTION_NAME'],},
answered Nov 14, 2018 at 23:59
Git.CoachGit.Coach
2,9742 gold badges36 silver badges54 bronze badges
On Windows, you need to add the path %USERPROFILE%\AppData\Roaming\Python\Scripts
to your path.
zb226
8,9386 gold badges47 silver badges75 bronze badges
answered Jan 2, 2019 at 19:35
Jared BeachJared Beach
2,23630 silver badges35 bronze badges
1
Windows and Python 3.9 from MS Store
I have a different path with python -m site --user-base
and python -m site
- yes, the second command without --user-base
to get all sites - as the other answers here state:
C:\Users\\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages
Why is my path different
Because I installed python
from MS Store
Solution
Put the above path in your path and replace site-packages
with scripts
answered Jul 3, 2021 at 6:04
TimoTimo
2,6743 gold badges26 silver badges26 bronze badges
When you install Python or Python3 using MacOS installer [downloaded from Python website] - it adds an export
er to your ~/.profile
script. All you need to do is just
source
it. Restarting all the terminals should also do the trick.
WARNING - I believe it's better to just use pip3 with Python3 - for future benefits.
If you already have Python3 installed, the following steps work for me on macOS Mojave:
Install ansible first using
sudo
-sudo -H pip3 install ansible
you create a symlink to the Python's
bin
path
sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/current_python_bin
and staple it to .profile
export PATH=$PATH:/Library/Frameworks/Python.framework/current_python_bin
run
source ~/.profile
and restart all terminal shells.Type
ansible --version
Dharman♦
28k21 gold badges75 silver badges127 bronze badges
answered Aug 16, 2020 at 11:14
ha9u63arha9u63ar
5,6799 gold badges65 silver badges95 bronze badges
0
In addition to adding python's bin
directory to $PATH
variable, I also had to change the owner of that directory, to make it work. No idea why I wasn't the owner already.
chown -R ~/Library/Python/
answered Jul 29, 2019 at 8:50
d4Rkd4Rk
6,4865 gold badges45 silver badges57 bronze badges
I solve the problem!
- Use
pip3
insteadpip
. pip3 install foobaz
vim ~/.zshrc
and add:
export PATH="/Users/your_name/Library/Python/3.8/bin:$PATH"
source ~/.zshrc
Now MacOS has shifted the default terminal from
bash
tozsh
. Therefore, you have to source zshrc but not bashrc or bash_profile.
foobaz -v
answered May 31 at 12:03
PandyPandy
593 bronze badges
0
had the same issue with macOS Monterey. I had to modify my .bash_profile
file and add the following entry
export PATH="~/Library/Python/3.8/bin:$PATH"
The default python version on macOS Monterey is 3.8, but you will have to double check your python version to make sure you're using the correct one
answered May 14 at 15:49
Diego VelezDiego Velez
1,35413 silver badges18 bronze badges