Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix 'Could not find a version that satisfies the requirement' for install_requires list when pip installing in custom package?

I am trying to build my own Python package (installable by pip) using the twine package. This is all going well right up until the point where I try to pip install my actual package (so after uploading to PyPi).

So I first run:

python3 setup.py sdist bdist_wheel

In which my setup.py install_requires list looks like this:

install_requires=[
'jupyter_kernel_gateway==2.4.0',
'pandas==1.0.2',
'numpy==1.18.1',
'azure-storage-blob==2.0.1',
'azure-datalake-store==0.0.48',
'psycopg2-binary==2.8.4',
'xlsxwriter==1.2.6',
'SQLAlchemy==1.3.12',
'geoalchemy2==0.6.3',
'tabulate==0.8.2',
'pyproj==1.9.6',
'geopandas==0.4.0',
'contextily==0.99.0',
'matplotlib==3.0.2',
'humanize==0.5.1',
'ujson==1.35',
'singleton-decorator==1.0.0',
'dataclasses==0.6',
'xlrd==1.2.0'],

In my understanding, these install_requires would be installed by pip when installing my own package.

After this I run

python3 -m twine upload --repository testpypi dist/*

To actually upload my package to PyPi. However, when pip installing my package, I get errors that say there are no versions that satisfy the requirements for a lot of the listed requirements. E.g.: ERROR: Could not find a version that satisfies the requirement psycopg2-binary==2.8.4

When I manually install these packages (e.g. pip install psycopg2-binary==2.8.4), they do get installed.

Is there any way to make the pip install of my package actually install the install_requires requirement list succesfully?

like image 338
Tim Avatar asked Sep 23 '20 15:09

Tim


People also ask

How do you fix could not find a version that satisfies the requirement pip?

Step 1 – Update system. It is always a good idea to update before trying to install a new package. Step 2 – Install pip3. If Python 3 has already been installed on the system, execute the command below to install pip3: sudo apt-get -y install python3-pip.

Could not find a version that satisfies the requirement package?

The error "Could not find a version that satisfies the requirement pandas" is often caused due to not having the necessary permissions to install a package for all users on the machine. To solve the error, install the package scoped to the specific user with the --user option.

How do I get-pip in Python?

Step 1: Download the get-pip.py (https://bootstrap.pypa.io/get-pip.py) file and store it in the same directory as python is installed. Step 2: Change the current path of the directory in the command line to the path of the directory where the above file exists. Step 4: Now wait through the installation process. Voila!

How install pip using setup py?

Installing Python Packages with Setup.py 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.


1 Answers

You didn't show how your pip install-ing your package, but I'm guessing you're using something like:

pip install your_project --index-url https://test.pypi.org/simple

The issue is that TestPyPI doesn't contain copies of your dependencies that exist on PyPI. For example:

  • Exists: https://pypi.org/project/psycopg2-binary/2.8.4/
  • Does not exist: https://test.pypi.org/project/psycopg2-binary/2.8.4/

You can configure pip to fall back on TestPyPI when a package is missing instead by specifying --extra-index-url instead:

pip install your_project --extra-index-url https://test.pypi.org/simple 
like image 52
Dustin Ingram Avatar answered Oct 05 '22 13:10

Dustin Ingram