After installing a package in an Conda environment, I'd like to make some changes to the code in that package.
Where can I find the site-packages
directory containing the installed packages?
I have an Anaconda Python 2.7 base distribution, but I do not find a directory:
/Users/username/anaconda/lib/python2.7/site-packages
conda install --copy --force-reinstall <pkg_name>
operation.
You can import the module and check the module.__file__
string. It contains the path to the associated source file.
Alternatively, you can read the File
tag in the the module documentation, which can be accessed using help(module)
, or module?
in IPython.
Run this inside python shell:
from distutils.sysconfig import get_python_lib
print(get_python_lib())
Linux users can find the locations of all the installed packages like this:
pip list | xargs -exec pip show
Updated 2022-03-21 to remove the unwanted table heading at the top of pip list output:
pip list | tail -n +3 | xargs -exec pip show
xargs
!
python -m site
).
One more option using the interpreter:
import site; print(''.join(site.getsitepackages()))
And using a terminal/prompt:
python -c "import site; print(''.join(site.getsitepackages()))"
Also in this case you can easily print one of the directory (in case there are more than one) using own filter
I installed miniconda and found all the installed packages in /miniconda3/pkgs
site-packages
. You shouldn't mess with these, otherwise you'll could end up with corruption complaints from Conda.
You could also type 'conda list' in a command line. This will print out the installed modules with the version numbers. The path within your file structure will be printed at the top of this list.
conda list
, as its first line, spits out the root of your conda installation; inside that is the pkgs
folder.
miniconda
installation I find some packages at 'lib/python3.7/site-packages'
The location should be (in Linux systems):
home/<USERNAME>/anaconda3/envs/<ENV_NAME>/lib/python<VERSION>/site-packages/
You should find installed packages in :
anaconda's directory / lib / site_packages
That's where i found mine.
At least with Miniconda (I assume it's the same for Anaconda), within the environment folder, the packages are installed in a folder called \conda-meta.
i.e.
C:\Users\username\Miniconda3\envs\environmentname\conda-meta
If you install on the base environment, the location is:
C:\Users\username\Miniconda3\pkgs
site-packages
for the Python installation.
Generic approach for environment foo from Conda CLI would be:
conda run -n foo python -m site
which for my base environment looks like:
$ conda run -n base python -m site
sys.path = [
'/Users/mfansler/miniconda3/lib/python3.8',
'/Users/mfansler/miniconda3/lib/python38.zip',
'/Users/mfansler/miniconda3/lib/python3.8/lib-dynload',
'/Users/mfansler/miniconda3/lib/python3.8/site-packages',
]
USER_BASE: '/Users/mfansler/.local' (exists)
USER_SITE: '/Users/mfansler/.local/lib/python3.8/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
The answer is the site-packages
in the sys.path
list.
I encountered this issue in my conda environment. The reason is that packages have been installed into two different folders, only one of which is recognised by the Python executable.
~/anaconda2/envs/[my_env]/site-packages ~/anaconda2/envs/[my_env]/lib/python2.7/site-packages
A proved solution is to add both folders to python path, using the following steps in command line (Please replace [my_env] with your own environment):
conda activate [my_env]. conda-develop ~/anaconda2/envs/[my_env]/site-packages conda-develop ~/anaconda2/envs/[my_env]/lib/python2.7/site-packages (conda-develop is to add a .pth file to the folder so that the Python executable knows of this folder when searching for packages.)
To ensure this works, try to activate Python in this environment, and import the package that was not found.
Success story sharing
example: >>import tensorflow >>tensorflow.__file__