J'utilise Ubuntu 16.04 LTS. J'ai python3
installée. Il existe deux versions installées, python 3.4.3
et python 3.6
. Chaque fois que j'utilise python3
commande, il faut python 3.4.3
par défaut. Je veux utiliser python 3.6
avec python3
.
python3 --version
montre version 3.4.3
J'installe ansible
qui prend en charge version > 3.5
. Donc, chaque fois que je tape ansible dans le terminal, cela génère une erreur à cause de python 3.4
Du commentaire:
Sudo update-alternatives --config python
Vous montrera une erreur:
update-alternatives: error: no alternatives for python3
Vous devez mettre à jour votre update-alternatives
, vous pourrez alors définir votre version par défaut python.
Sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
Sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
Exécutez ensuite:
Sudo update-alternatives --config python
Définissez python3.6 par défaut.
Ou utilisez la commande suivante pour définir python3.6 par défaut:
Sudo update-alternatives --set python /usr/bin/python3.6
Vous pouvez y parvenir en appliquant les étapes simples ci-dessous -
python --version
Sudo su
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
python --version
L'utilisation de ces commandes peut vous aider:
ls /usr/bin/python*
alias python='/usr/bin/pythonxx'
(ajoutez ceci à . ~/.bashrc
). ~/.bashrc
python --version
Créez un lien symbolique pour/usr/bin/python3. Dans mon LinuxMint:
# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24 2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен 6 2017 /usr/bin/python3 -> python3.5
# mv /usr/bin/python /usr/bin/python.bak
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2
Une réponse simple serait d'ajouter un alias pour python3.6.
Ajoutez simplement cette ligne dans le fichier ~/.bashrc: alias python3="python3.6"
, puis fermez votre terminal et ouvrez-en un nouveau. Maintenant, lorsque vous tapez python3 xxx
il est traduit en python3.6 xxx
.
Cette solution résout votre problème sans avoir à modifier votre système trop fortement.
MODIFIER:
Comme Mikael Kjær l'a souligné, il s'agit d'une mauvaise configuration de ansible avec votre système.
Comme vu ici:
Met le
ansible_python_interpreter
option de configuration vers/usr/bin/python3. L'option de configuration ansible_python_interpreter est généralement définie par hôte en tant que variable d'inventaire associée à un hôte ou à un groupe d'hôtes:# Example inventory that makes an alias for localhost that uses python3 [py3-hosts] localhost-py3 ansible_Host=localhost ansible_connection=local [py3-hosts:vars] ansible_python_interpreter=/usr/bin/python3
Comme vu ici sur le fichier de configuration:
Des modifications peuvent être apportées et utilisées dans un fichier de configuration qui sera traité dans l'ordre suivant:
* ANSIBLE_CONFIG (an environment variable) * ansible.cfg (in the current directory) * .ansible.cfg (in the home directory) * /etc/ansible/ansible.cfg
si vous avez plusieurs versions de python dans votre système. Il vous suffit de mettre à jour le lien symbolique de python à l'intérieur de /usr/bin/
root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root 9 Apr 16 2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12 2018 python2.7
-rwxr-xr-x 2 root root 4.4M May 7 14:58 python3.6
Dans l'exemple ci-dessus, si vous voyez la sortie de python --version
vous obtiendrez python2.7
Maintenant, mettez à jour le lien symbolique python en utilisant la commande ci-dessous-
root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8
la première vérification avez-vous le dossier python3.6
ls /usr/bin/python3.6
si vous avez un dossier comme python3.6 bon pour aller
puis mise à jour-alternatives
Sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
maintenant mettre à jour une nouvelle configuration pour python3
Sudo update-alternatives --config python3
vérifier python
python3 --version
terminal ouvert et tapez: gedit ~/.bashrc
et ajoutez la ligne suivante:
alias python=python3.x
où x est votre python.
Codage heureux.
Vous pouvez modifier le lien symbolique par ln -sf python3.6 python3
À l'intérieur de /usr/bin
. Avec cela, lorsque vous appelez python3
, Il exécutera python3.6
update-alternatives consiste à changer les liens symboliques du système en liens symboliques définis par l'utilisateur/définis par l'administrateur. Si plusieurs versions de python3 sont installées sur votre système et que vous souhaitez contrôler la version de python3 à appeler lors de l'appel de python3. Procédez comme suit
Sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
Sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2
Exécutez la commande ci-dessous si vous souhaitez modifier la priorité à l'avenir.
update-alternatives --config python3
Explication:-
Sudo update-alternatives --install <symlink_Origin> <name_of_config> <symlink_destination> <priority>
Vous pouvez continuer à changer name_of_config en python4, mais vous devez ensuite invoquer update-alternatives --config avec python4 pour reconfigurer.
En utilisant cette approche, vous pouvez contrôler le système python et version python3 séparément.