# Sage pip not compatible with PyPI

I want to make a PyPI package for sage, similar to

https://pypi.python.org/pypi/darmonpo...

or

https://pypi.python.org/pypi/surface_...

that can be installed by anyone by typing one line. But trying these out, the installation instructions don't work! I get an error:

\$~/SageMath/sage -pip install surface_dynamics
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting surface_dynamics
Could not fetch URL https://pypi.python.org/simple/surface-dynamics/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
Could not find a version that satisfies the requirement surface_dynamics (from versions: )
No matching distribution found for surface_dynamics


I believe that it is because sage is using pip 8.x, and a later version is required for PyPI. If I try installing surface_dynamics with using pip 9.01, it downloads it (but gives an error later because it is not in sage), so I do think the version is a problem.

I just updated to sage 8.0. Is this planning to be fixed soon? If there is a workaround for me, I guess that is nice, but it defeats the purpose of getting my code hosted on PyPI if I still have to give the users complicated instructions.

Or maybe my sage installation is broken? Do others get the same error?

EDIT: In light of eric_g's answer, I tried installing the developer version of 8.1. Indeed the sage pip is now 9.01, but the same error persists. So I guess my theory about the versions is wrong. It must be something else funny with the sage pip?

edit retag close merge delete

In order to get SSL support in pip, you must recompile pipand Sage's Python interpreters after installing the development library(ies ?) for OpenSSL. It's usually easier and faster to start from scratch (i. e. make distclean).

Also, I seem to remember that Mac OS X plays shenanigans with SSL, but I don't have details in ming. I have ranted a bit about OpenSSL support on sage-devel, and there is a few ickets on Trac. Look for Dima Pasechnik's comments : he knows what he's talking about...

( 2019-09-20 03:11:05 -0500 )edit

Sort by » oldest newest most voted

I had a similar result when installing psycopg2 in my own computer, and sudoing pip install --upgrade psycopg2 solve my problem. I did not try without the option --upgrade for sage, but I also ran sage -pip install --upgrade pyscopg2 and no problema!

more

The error you report, as @tmonteil answered, comes from using a Sage built without SSL support.

Lack of SSL support won't let you pip-install using

sage -pip install name_of_the_package


sage -pip install /path/to/the/downloaded/package


In addition, you could install openssl into your Sage installation as follows:

sage -i openssl
sage -f python2
sage -i pyopenssl


after which you should be able to sage -pip install any package you want.

more

It is likely you complied Sage's Python without SSL support. Could you try to recompile it with libssl-dev package installed (or similar package depending on your distro) ?

more

I'm using a MacBook with OS X 10.12.5. Apparently it doesn't come with SSL support: https://github.com/saghul/pythonz/iss.... I have now installed opensll and rebuild sage 8.0. I still get the same error. At least I know that it is a problem with my computer and not with sage.

( 2017-09-12 11:52:48 -0500 )edit

pip 9.0.1 will be available in Sage 8.1 (cf. the ticket #23615, which has been merged in Sage 8.1.beta4). If you want to use it right now, you have to use the develop version of Sage:

git clone https://github.com/sagemath/sage.git
cd sage
git checkout -b develop
git pull origin develop
MAKE="make -j8" make

more

Thank you! This is what I was hoping for. But unfortunately it didn't fix the problem (see edit).

( 2017-09-07 15:20:02 -0500 )edit