$ python3 --version
Python 3.6.1
$ python3 -m virtualenv venv
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in .../venv/bin/python3
Also creating executable in .../venv/bin/python
Installing setuptools, pip, wheel...done.
$ source venv/bin/activate
$ pip install tensorflow
Collecting tensorflow
Using cached tensorflow-1.2.0-cp36-cp36m-macosx_10_11_x86_64.whl
....
$ python
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from tensorflow.examples.tutorials.mnist import input_data
>>> mnist = input_data.read_data_sets("/tmp/data/")
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1318, in do_open
encode_chunked=req.has_header('Transfer-encoding'))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1285, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1234, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1026, in _send_output
self.send(msg)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 964, in send
self.connect()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1400, in connect
server_hostname=server_hostname)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 401, in wrap_socket
_context=self, _session=session)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 808, in __init__
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1061, in do_handshake
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 683, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../venv/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py", line 235, in read_data_sets
SOURCE_URL + TRAIN_IMAGES)
File ".../venv/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 208, in maybe_download
temp_file_name, _ = urlretrieve_with_retry(source_url)
File ".../venv/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 165, in wrapped_fn
return fn(*args, **kwargs)
File ".../venv/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 190, in urlretrieve_with_retry
return urllib.request.urlretrieve(url, filename)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 248, in urlretrieve
with contextlib.closing(urlopen(url, data)) as fp:
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 526, in open
response = self._open(req, data)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 544, in _open
'_open', req)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 504, in _call_chain
result = func(*args)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1361, in https_open
context=self._context, check_hostname=self._check_hostname)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1320, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)>
Cela ne se reproduit pas avec TensorFlow 1.1.
Pourriez-vous essayer avec python2 (installation système par défaut de py) ? De plus, comment avez-vous installé avec brew ou macports (nous utilisons brew pour nos tests, cela a donc plus de chances de fonctionner).
J'ai installé Python 3.6 à l'aide du programme d'installation dmg du site Web Python (pas via brew ou macports).
Cela semble fonctionner avec Python 2.7.10. J'avais pensé que dans Python 2.x urlretrieve ne validait pas le certificat du serveur, mais apparemment c'est le cas à partir de la version 2.7.9 : https://docs.python.org/2/library/urllib.html
Cela me fonctionne sur python 3.4 sous Linux. J'essaierais d'installer python3.6 en utilisant brew. Cela pourrait être la distribution python3 que vous utilisez a des certificats de données.
C'est peut-être aussi parce que je suis récemment passé à une nouvelle machine et qu'elle n'est encore que partiellement installée :)
Pour référence future : si vous souhaitez utiliser le programme d'installation Python dmg, vous devez également lire le fichier ReadMe de Python 3 et exécuter le script bash /Applications/Python 3.6/Install Certificates.command
pour installer les certificats les plus récents.
Merci pour la réponse rapide, @aselle !
Si vous voulez juste copier coller dans Terminal :
/Applications/Python\ 3.6/Install\ Certificates.command
J'ai exactement le même problème sur MacOSX 10.11.6
J'ai d'abord suivi exactement les étapes ici pour la configuration de virtualenv
pour Python 3.n : https://www.tensorflow.org/install/install_mac
Ensuite, en suivant les 2 premières étapes de ce tutoriel https://www.tensorflow.org/get_started/mnist/beginners, je vois ce qui suit ; toute suggestion pour contourner ce problème (par exemple, pourrais-je le télécharger ailleurs ?) serait grandement appréciée.
(tensorflow) ~/tensorflow $ python
Python 3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from tensorflow.examples.tutorials.mnist import input_data
>>> mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1318, in do_open
encode_chunked=req.has_header('Transfer-encoding'))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1285, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1234, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1026, in _send_output
self.send(msg)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 964, in send
self.connect()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/http/client.py", line 1400, in connect
server_hostname=server_hostname)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 401, in wrap_socket
_context=self, _session=session)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 808, in __init__
self.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 1061, in do_handshake
self._sslobj.do_handshake()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/ssl.py", line 683, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/aaron/tensorflow/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py", line 235, in read_data_sets
SOURCE_URL + TRAIN_IMAGES)
File "/Users/aaron/tensorflow/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 208, in maybe_download
temp_file_name, _ = urlretrieve_with_retry(source_url)
File "/Users/aaron/tensorflow/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 165, in wrapped_fn
return fn(*args, **kwargs)
File "/Users/aaron/tensorflow/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 190, in urlretrieve_with_retry
return urllib.request.urlretrieve(url, filename)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 248, in urlretrieve
with contextlib.closing(urlopen(url, data)) as fp:
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 526, in open
response = self._open(req, data)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 544, in _open
'_open', req)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 504, in _call_chain
result = func(*args)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1361, in https_open
context=self._context, check_hostname=self._check_hostname)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 1320, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:748)>
@brightbytes-dude Avez-vous exécuté la commande répertoriée ici : https://github.com/tensorflow/tensorflow/issues/10779#issuecomment -309134512
/Applications/Python\ 3.6/Install\ Certificates.command
Cela a fait l'affaire, merci!! (J'ai stupidement supposé que cela n'était pertinent que pour l'installation de dmg
.)
Pourriez-vous s'il vous plaît modifier l'URL de téléchargement MNIST dans contrib/learn/python/learn/datasets/mnist.py pour ne pas utiliser https ? Cela aidera les personnes qui ont ce problème. Dans essayé dans un navigateur et le lien de téléchargement http fonctionne.
ligne à modifier :
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
nouvelle ligne:
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
Bonjour,
Je suis nouveau sur python et tensorflow. Essayer l'exemple MNIST et recevoir à peu près les mêmes messages d'erreur que paulcwatts (ci-dessus)
de tensorflow.examples.tutorials.mnist importer input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
Traceback (appel le plus récent en dernier) :
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 1318, dans do_open
encode_chunked=req.has_header('Transfer-encoding'))
Fichier "C:UsersAndreasDocumentsPythonlibhttpclient.py", ligne 1239, en demande
self._send_request(méthode, url, corps, en-têtes, encode_chunked)
Fichier "C:UsersAndreasDocumentsPythonlibhttpclient.py", ligne 1285, dans _send_request
self.endheaders(corps, encode_chunked=encode_chunked)
Fichier "C:UsersAndreasDocumentsPythonlibhttpclient.py", ligne 1234, dans les en-têtes de fin
self._send_output(message_body, encode_chunked=encode_chunked)
Fichier "C:UsersAndreasDocumentsPythonlibhttpclient.py", ligne 1026, dans _send_output
self.send(msg)
Fichier "C:UsersAndreasDocumentsPythonlibhttpclient.py", ligne 964, en envoi
self.connect()
Fichier "C:UsersAndreasDocumentsPythonlibhttpclient.py", ligne 1400, en connexion
server_hostname=server_hostname)
Fichier "C:UsersAndreasDocumentsPythonlibssl.py", ligne 401, dans wrap_socket
_context=soi, _session=session)
Fichier "C:UsersAndreasDocumentsPythonlibssl.py", ligne 808, dans __init__
self.do_handshake()
Fichier "C:UsersAndreasDocumentsPythonlibssl.py", ligne 1061, dans do_handshake
self._sslobj.do_handshake()
Fichier "C:UsersAndreasDocumentsPythonlibssl.py", ligne 683, dans do_handshake
self._sslobj.do_handshake()
ssl.SSLError : échec de la vérification du certificat [SSL : CERTIFICATE_VERIFY_FAILED] (_ssl.c:748)
Lors du traitement de l'exception ci-dessus, une autre exception s'est produite :
Traceback (appel le plus récent en dernier) : La principale différence est que je suis sous WINDOWS 10 et que je ne trouve pas la commande certificates.
Déposer "
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
Fichier "C:UsersAndreasDocumentsPythonlibsite-packagestensorflowcontiblearnpythonlearndatasetsmnist.py", ligne 240, dans read_data_sets
source_url + TRAIN_IMAGES)
Fichier "C:UsersAndreasDocumentsPythonlibsite-packagestensorflowcontiblearnpythonlearndatasetsbase.py", ligne 208, dans may_download
nom_fichier_temp, _ = urlretrieve_with_retry(source_url)
Fichier "C:UsersAndreasDocumentsPythonlibsite-packagestensorflowcontiblearnpythonlearndatasetsbase.py", ligne 165, dans wrap_fn
return fn( args, * kwargs)
Fichier "C:UsersAndreasDocumentsPythonlibsite-packagestensorflowcontiblearnpythonlearndatasetsbase.py", ligne 190, dans urlretrieve_with_retry
return urllib.request.urlretrieve(url, nom de fichier)
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 248, dans urlretrieve
avec contextlib.closing(urlopen(url, data)) comme fp :
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 223, dans urlopen
return opener.open(url, data, timeout)
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 526, en open
réponse = self._open(req, données)
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 544, dans _open
'_open', req)
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 504, dans _call_chain
résultat = func(*args)
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 1361, dans https_open
context=self._context, check_hostname=self._check_hostname)
Fichier "C:UsersAndreasDocumentsPythonliburllibrequest.py", ligne 1320, dans do_open
augmenter URLError(err)
urllib.error.URLError :
Désolé d'avoir peut-être posé des "questions stupides" mais ces erreurs ne "disparaissent pas"
J'ai le même problème avec SSL et cette ligne le résout,
/Applications/Python 3.6/Install Certificates.command
merci @EthanAI @aselle @paulcwatts
Si quelqu'un tombe sur cette page mais cherche la réponse pour autoriser Tensorflow Hub dans Ubuntu, je l'ai fait fonctionner comme ceci :
# Directory where user certs can be stored
cd /usr/local/share/ca-certificates
# Below may require elevated permissions, such as sudo su
pip3 install --upgrade certifi # Installs a certificate file
# Move the installed cert to the place Ubuntu expects it
cp /home/ubuntu/.local/lib/python3.5/site-packages/certifi/cacert.pem .
# Convert it into the format Ubuntu expects
openssl x509 -in cacert.pem -inform pem -outform der -out cacert.crt
# Actually load the new cert into the OS
update-ca-certificates
En plus de cela, une combinaison magique de configuration de mon proxy d'entreprise, de redémarrage du noyau de bloc-notes Jupyter et d'exécution de TF Hub à partir d'un script sur le terminal plutôt qu'à partir d'un bloc-notes a finalement fait fonctionner TF Hub à la fois sur le terminal et dans le bloc-notes .
l'exécution de cette commande a également échoué.
./Installer les certificats.commande
-- pip install --upgrade certifi
Certificat de collecte
Échec de la désérialisation de l'entrée du cache, entrée ignorée
Impossible de récupérer l'URL https://pypi.python.org/simple/certifi/ : un problème est survenu lors de la confirmation du certificat ssl : [SSL : CERTIFICATE_VERIFY_FAILED] échec de la vérification du certificat (_ssl.c:777) - saut
Impossible de trouver une version qui satisfait le certificat d'exigence (à partir des versions : )
Aucune distribution correspondante trouvée pour certifi
Traceback (appel le plus récent en dernier) :
Déposer "
Déposer "
Fichier "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", ligne 291, dans check_call
augmenter CalledProcessError(retcode, cmd)
subprocess.CalledProcessError : commande '['/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6', '-E', '-s', '-m', 'pip', 'install' , '--upgrade', 'certifi']' a renvoyé un état de sortie différent de zéro 1.
sur MacOS, la commande /Applications/Python\ 3.6/Install\ Certificates.command
fonctionne pour moi
/Applications/Python\ 3.6/Install\ Certificates.command
fait la magie sur MacOSX High Sierra. THX
Quelle est la solution pour ceux qui utilisent un environnement virtuel ?
Mise à jour : il semble que l'exécution de la même commande système indiquée ci-dessus fasse également l'affaire dans un venv actif. Bon à savoir!
Si vous voulez juste copier coller dans Terminal :
/Applications/Python\ 3.6/Install\ Certificates.command
Merci!
C'est peut-être aussi parce que je suis récemment passé à une nouvelle machine et qu'elle n'est encore que partiellement installée :)
Pour référence future : si vous souhaitez utiliser le programme d'installation Python dmg, vous devez également lire le fichier ReadMe de Python 3 et exécuter le script bash
/Applications/Python 3.6/Install Certificates.command
pour installer les certificats les plus récents.Merci pour la réponse rapide, @aselle !
Merci! Ça a marché! :RÉ
Merci
Pourriez-vous s'il vous plaît modifier l'URL de téléchargement MNIST dans contrib/learn/python/learn/datasets/mnist.py pour ne pas utiliser https ? Cela aidera les personnes qui ont ce problème. Dans essayé dans un navigateur et le lien de téléchargement http fonctionne.
ligne à modifier :
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
nouvelle ligne:
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
Je vois que les deux URL sont les mêmes.
Pourriez-vous s'il vous plaît modifier l'URL de téléchargement MNIST dans contrib/learn/python/learn/datasets/mnist.py pour ne pas utiliser https ? Cela aidera les personnes qui ont ce problème. Dans essayé dans un navigateur et le lien de téléchargement http fonctionne.
ligne à modifier :
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
nouvelle ligne:
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
Cela a fonctionné pour moi.
Nous n'avons besoin que d'une entrée au terminal
open "/Applications/Python 3.6/Install Certificates.command"
Pourriez-vous s'il vous plaît modifier l'URL de téléchargement MNIST dans contrib/learn/python/learn/datasets/mnist.py pour ne pas utiliser https ? Cela aidera les personnes qui ont ce problème. Dans essayé dans un navigateur et le lien de téléchargement http fonctionne.
ligne à modifier :
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
nouvelle ligne:
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ 'Je vois que les deux URL sont les mêmes.
remplacez ' https://... ' par ' http://... '
/Applications/Python 3.7/Install Certificates.command
Travaille pour moi
Comment le faire dans Manjaro Linux ? J'ai Python3.7 tensorflow.
Si vous voulez juste copier coller dans Terminal :
/Applications/Python\ 3.6/Install\ Certificates.command
Merci mec! Ça marche pour moi!
Je viens d'exécuter le code dans jupyter notebook :
!/Applications/Python\ 3.6/Install\ Certificates.command
allez sur .local/python3.X/lib/python3.6/site-packages/keras/utils/data_utils.py
```demandes d'importation
request.packages.urllib3.disable_warnings()
importer ssl
essayer:
_create_unverified_https_context = ssl._create_unverified_context
sauf AttributeError :
# Python hérité qui ne vérifie pas les certificats HTTPS par défaut
passe
autre:
# Gérer l'environnement cible qui ne prend pas en charge la vérification HTTPS
ssl._create_default_https_context = _create_unverified_https_context
```
essayez maintenant une nouvelle instance de python et ..j'espère que cela fonctionnera :smile_cat:
C'est peut-être aussi parce que je suis récemment passé à une nouvelle machine et qu'elle n'est encore que partiellement installée :)
Pour référence future : si vous souhaitez utiliser le programme d'installation Python dmg, vous devez également lire le fichier ReadMe de Python 3 et exécuter le script bash
/Applications/Python 3.6/Install Certificates.command
pour installer les certificats les plus récents.Merci pour la réponse rapide, @aselle !
Tu m'as sauvé la vie avec ce commentaire ! <3
Pourriez-vous s'il vous plaît modifier l'URL de téléchargement MNIST dans contrib/learn/python/learn/datasets/mnist.py pour ne pas utiliser https ? Cela aidera les personnes qui ont ce problème. Dans essayé dans un navigateur et le lien de téléchargement http fonctionne.
ligne à modifier :
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
nouvelle ligne:
SOURCE_URL = ' https://storage.googleapis.com/cvdf-datasets/mnist/ '
Cela fonctionne pour moi sur Ubuntu
en changeant ~/miniconda/envs/py36/lib/python3.6/site-packages/tensorflow_core/python/keras/datasets/mnist.py
Nouvelle ligne
origin_folder = 'http://storage.googleapis.com/tensorflow/tf-keras-datasets/'
Voici ce qui a fonctionné pour moi :
C'est tout. L'utilitaire de téléchargement keras recherche dans ce dossier les données mises en cache avant de passer sur le réseau.
(Python 3.7.3, tensorflow 2.1.0)
/Applications/Python 3.6/Install Certificates.command cela fonctionne-t-il également pour l'environnement virtuel ?
Commentaire le plus utile
C'est peut-être aussi parce que je suis récemment passé à une nouvelle machine et qu'elle n'est encore que partiellement installée :)
Pour référence future : si vous souhaitez utiliser le programme d'installation Python dmg, vous devez également lire le fichier ReadMe de Python 3 et exécuter le script bash
/Applications/Python 3.6/Install Certificates.command
pour installer les certificats les plus récents.Merci pour la réponse rapide, @aselle !