Question
I installed a local package called credentials
using
pip install -e c:\users\worker\src\clockwork\lib\credentials
But when I try to import the package from a sibling directory, it fails with an ImporError:
cd c:\users\worker\src\clockwork\bank python -c "import credentials" ... ImportError: No module named 'credentials'
Confusingly, the package credentials
is listed as successfully installed as shown when I run pip list
:
... credentials (1.0.0, c:\users\worker\src\clockwork\lib\credentials) ...
How can I install my local package so that it can be imported?
Background
I am using Python 3.4 (32-bit). The package contains two files:
credentials\__init__.py credentials\setup.py
The __init__.py
file defines a single function. The setup.py
file is short:
from distutils.core import setup setup(name='credentials', version='1.0.0')
Workaround
I currently add the directory containing the package (c:\users\worker\src\clockwork\lib
) to my PATH
variable as a workaround. But my question is how to install the package properly so that I do not need to modify the PATH
.
Install the downloaded package into a local directory : python get-pip.py --user This will install pip to your local directory (. local/bin) . Now you may navigate to this directory (cd . local/bin) and then use pip or better set your $PATH variable this directory to use pip anywhere : PATH=$PATH:~/.
To install a package that includes a setup.py file, open a command or terminal window and: cd into the root directory where setup.py is located. Enter: python setup.py install.
Uninstall the python package then install it using:
python -m pip install -e c:\users\worker\src\clockwork\lib\credentials
What is probably happening is that you have multiple python installs and pip is run from one install while you are trying to use the package from another. See also:
The problem centers on setup.py
. It needs to declare a package:
from distutils.core import setup setup(name='credentials', version='1.0.0', packages=['credentials'])
But this setup.py
must be in the parent directory of the credentials
package, so in the end, the directory structure is:
...\credentials\setup.py ...\credentials\credentials\__init__.py
With this change, the module is found after reinstalling the package.
This could also be caused by two Python installs (but wasn't in my case), and @Mr_and_Mrs_D gives an answer for that case.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With