3 votes

Comment obtenir les autorisations de fichier correctes à partir des installations Macports pip ?

Macports définit la propriété de son répertoire site-packages Python comme root.wheel avec des autorisations lisibles par tous. Les paquets Python installés via port install ont les mêmes

# ls -l -d /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
drwxr-xr-x  151 root  wheel  5134 Mar  8 10:56 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Cela empêche bien sûr les utilisateurs individuels d'utiliser pip install pour ajouter des paquets, ce qui est tout à fait normal puisque cela devrait vraiment être fait en tant que root.

Cependant, si l'on utilise sudo ou un shell root pour pip install, les paquets sont installés par pip comme lisibles uniquement par root.wheel (740).

% sudo pip install BeautifulSoup
...
% ls -l -d   /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/BeautifulSoup.py
-rw-r-----  1 root  wheel  79567 Mar  8 11:09 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/BeautifulSoup.py

Cela empêche mon compte utilisateur d'importer ou d'utiliser le paquet (*).

Comment puis-je faire en sorte que pip place toujours des autorisations raisonnables sur les paquets installés ?

Mise à jour (édition)

J'ai reformulé la question pour mettre en avant le fait qu'il s'agit uniquement des installations pip. Je voudrais également souligner ici que le problème ne concerne pas le besoin de permission d'écriture pour les modules. Le problème est que les modules sont installés sans permission de lecture.

(*) Un hack pour le résoudre est de chmod a+rX les permissions appropriées (744/755) sur les fichiers des nouveaux paquets installés

Mise à jour 2 (solution)

Comme suggéré à la fois par Mark et Ian, et confirmé lors d'un test rapide, cela a à voir avec l'umask pour root. Voici la documentation sur la manière de changer /etc/sudoers pour OSX. Notez qu'il n'est pas forcément conseillé de changer l'umask pour toutes les instances sudo !

2voto

shsteimer Points 8749

Vous pouvez utiliser virtualenv pour créer une "copie" locale de l'installation de Python qui vous appartient et que vous pouvez facilement manipuler. L'avantage d'utiliser virtualenv est que vous pouvez créer de nombreuses copies de la même version de Python, mais avec des versions différentes de packages similaires installés, puis basculer entre eux avec la ligne de commande virtualenv.

Cela vous permet d'utiliser différentes versions de bibliothèques dans différents projets ou des bibliothèques incompatibles.

Pour installer virtualenv:

sudo pip install virtualenv

Et maintenant, vous pouvez l'utiliser vous-même, sans sudo, pour créer un environnement python virtuel qui vous appartient :

mkdir -p ~/Développement/monprojetpython
cd ~/Développement/monprojetpython
virtualenv .venv
source .venv/bin/activate

Par exemple:

IanCsiMac:~/Developpement/baseclef-python |ruby-2.1.2| [git::develop]
> which python
/usr/local/bin/python

IanCsiMac:~/Developpement/baseclef-python |ruby-2.1.2| [git::develop]
> source .venv/bin/activate

(.venv)
IanCsiMac:~/Developpement/baseclef-python |ruby-2.1.2| [git::develop]
> which python
/Users/ian/code/baseclef-python/.venv/bin/python

(.venv)
IanCsiMac:~/Developpement/baseclef-python |ruby-2.1.2| [git::develop]
> deactivate

IanCsiMac:~/Developpement/baseclef-python |ruby-2.1.2| [git::develop]
> which python
/usr/local/bin/python

Vous pouvez installer virtualenv dans votre répertoire ~ si vous voulez qu'un python par défaut que vous contrôlez soit disponible en tout temps de la manière suivante :

cd ~
virtualenv venv

Et maintenant, vous avez ~/venv/bin/pip à votre disposition. Vous pouvez modifier votre ~/.bash_profile et ajouter :

source venv/bin/activate

En fin de compte pour avoir votre environnement virtuel disponible par défaut dans votre shell.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X