tslearn
tslearn copied to clipboard
[Improve Docs] tslearn.datasets requires extra installs on MacOS
On MacOS, the tslearn.datasets
does not work out-of-the-box.
In order to make it work, you need to apply the following steps:
- Go to your finder
- run "/Apps/Python<VERSION>/Install Certificates.command". This basically installs the
certifi
package with pip.
Perhaps we should add this to the documentation page of our datasets module?
Hum, I guess if we do it like that, there is a high chance that the package will not be installed on the target python. Shouldn't we rather state in the docs that on MacOS, one needs to install the certifi
package with pip
?
Yes, that seems like an ideal fix to me Romain!
It is perhaps important to note that the Install Certificates
script does a bit more than just pip install certifi
:
#!/bin/sh
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 << "EOF"
# install_certifi.py
#
# sample script to install or update a set of default Root Certificates
# for the ssl module. Uses the certificates provided by the certifi package:
# https://pypi.org/project/certifi/
import os
import os.path
import ssl
import stat
import subprocess
import sys
STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
| stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
| stat.S_IROTH | stat.S_IXOTH )
def main():
openssl_dir, openssl_cafile = os.path.split(
ssl.get_default_verify_paths().openssl_cafile)
print(" -- pip install --upgrade certifi")
subprocess.check_call([sys.executable,
"-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"])
import certifi
# change working directory to the default SSL directory
os.chdir(openssl_dir)
relpath_to_certifi_cafile = os.path.relpath(certifi.where())
print(" -- removing any existing file or link")
try:
os.remove(openssl_cafile)
except FileNotFoundError:
pass
print(" -- creating symlink to certifi certificate bundle")
os.symlink(relpath_to_certifi_cafile, openssl_cafile)
print(" -- setting permissions")
os.chmod(openssl_cafile, STAT_0o775)
print(" -- update complete")
if __name__ == '__main__':
main()
EOF
I don't have a MacOS so will leave the issue open for someone who does (we had this issue with a student of mine)