By default pip installs packages from a public PyPi repository but can also be configured to install them from the private repositories, like Nexus or Artifactory.
In this note i will show how to configure pip to install packages from the private repositories.
I will also show how to define username and password in pip for the private repositories that require authentication and how to troubleshoot the SSL related issues.
Cool Tip: How to install specific version of a package using pip! Read More →
Pip Install From Private Repo
Install a package from the private PyPi repository:
$ pip install -i https://<repository-url> <package> - or - $ pip install -i https://<repository-url> -r requirements.txt
In case of the:
SSLError “SSL: CERTIFICATE_VERIFY_FAILED”
– or –
WARNING “The repository located at <repository-domain> is not a trusted or secure host and is being ignored.”
you can define a path to the CA bundle and install a package from the private PyPi repository as follows:
$ pip install --cert <path> \
-i https://<repository-url> <package>
Or you can mark the <repository-domain> as a trusted host to ignore the SSL check:
$ pip install --trusted-host <repository-domain> \
-i https://<repository-url> <package>
Connect to the private PyPi repository using the basic authentication:
$ pip install --trusted-host <repository-domain> \
-i https://<user>:<pass>@<repository> <package>
Example:
$ pip install --trusted-host pypi.python.org \
-i https://username:passw0rd@pypi.python.org/simple numpy
The private PyPi repository settings can also be defined in /etc/pip.conf, for example:
[global] index-url = https://username:passw0rd@pypi.python.org/simple trusted-host = pypi.python.org #cert = /etc/pki/ca-trust/source/ca-bundle.crt
Hi
How would you do that securely, with the password and username not in a config file and not in the script that is getting the file for a test build?
Can you pass the values in variables and use them from there?
For instance, Jenkins will grab authentication info from a secrets vault and pass them in two variables in the environment of the build job.
Thanks,
Rob
Greetings,
You can access environment variables from Python easily. You can assign variables on the command line using bash/tcsh/etc.
Regards,
jam
thanks for the explanation