2016-04-27 8 views
8

Wie installiert man ein Paket in der Standard-Python-Umgebung , d. H./usr/local/lib/python2.7/dist-packages mit pip und machen dieses neue Paket für alle Benutzer ohne Verwendung von virtualenv?Wie installiere ich ein Modul für alle Benutzer mit pip auf Linux?

durch die folgende verwenden, wird das Paket nur mit Root-Rechten installiert:

$ sudo pip install loremipsum 
Downloading/unpacking loremipsum 
    Downloading loremipsum-1.0.5.tar.gz 
    Running setup.py (path:/tmp/pip_build_root/loremipsum/setup.py) 
    egg_info for package loremipsum 

Installing collected packages: loremipsum 
    Running setup.py install for loremipsum 

Successfully installed loremipsum 
Cleaning up... 

Beweis:

$ python -c 'import loremipsum' 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ImportError: No module named loremipsum 

$ sudo python -c 'import loremipsum' 

$ pip install loremipsum 
Requirement already satisfied (use --upgrade to upgrade): loremipsum in 
/usr/local/lib/python2.7/dist-packages 
Cleaning up... 

$ cowsay sad 
_____ 
<sad> 
----- 
     \ ^__^ 
     \ (oo)\_______ 
      (__)\  )\/\ 
       ||----w | 
       ||  || 

Bitte nicht mich raten apt-get install python-... stattdessen zu verwenden. Ich würde gerne wissen, was ist mein Fehler und wie Pip richtig zu verwenden.

$ python --version 
Python 2.7.6 
$ pip --version 
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7) 
$ uname -a 
Linux _ 3.19.0-32-generiC#37~14.04.1-Ubuntu SMP _ x86_64 GNU/Linux 

EDIT

ich denke, das Problem ist, weil pip nicht die Gruppe und alle ermöglichen die installierten Sachen zu lesen:

$ sudo pip uninstall loremipsum 
Uninstalling loremipsum: 
    /usr/local/lib/python2.7/dist-packages/loremipsum-1.0.5.egg-info 
    /usr/local/lib/python2.7/dist-packages/loremipsum/__init__.py 
    /usr/local/lib/python2.7/dist-packages/loremipsum/__init__.pyc 
    /usr/local/lib/python2.7/dist-packages/loremipsum/default/dictionary.txt 
    /usr/local/lib/python2.7/dist-packages/loremipsum/default/sample.txt 
    /usr/local/lib/python2.7/dist-packages/loremipsum/generator.py 
    /usr/local/lib/python2.7/dist-packages/loremipsum/generator.pyc 
Proceed (y/n)? y 
    Successfully uninstalled loremipsum 

$ sudo pip install loremipsum 
Downloading/unpacking loremipsum 
    Downloading loremipsum-1.0.5.tar.gz 
    Running setup.py (path:/tmp/pip_build_root/loremipsum/setup.py) egg_info for package loremipsum 

Installing collected packages: loremipsum 
    Running setup.py install for loremipsum 

Successfully installed loremipsum 
Cleaning up... 
$ sudo ls -al /usr/local/lib/python2.7/dist-packages/loremipsum 
total 60 
drwxr-s--- 3 root staff 4096 Apr 27 22:06 . 
drwxrwsr-x 18 root staff 4096 Apr 27 22:06 .. 
drwxr-s--- 2 root staff 4096 Apr 27 22:06 default 
-rw-r----- 1 root staff 16182 Apr 27 22:06 generator.py 
-rw-r----- 1 root staff 16323 Apr 27 22:06 generator.pyc 
-rw-r----- 1 root staff 6130 Apr 27 22:06 __init__.py 
-rw-r----- 1 root staff 6869 Apr 27 22:06 __init__.pyc 
+0

Was ist die Ausgabe von 'python --version' und' pip --version'? –

+0

Ja, aber ich will es nicht vom Betriebssystem trennen ... – nowox

+0

@wRAR pip und virtualenv sind für ganz andere Aufgaben. Es ist wahr, dass viele Leute pip und virtualenv in Kombination benutzen, aber ich denke nicht, dass es richtig ist zu sagen, dass das die * richtige * Verwendung ist. – wim

Antwort

10

schaffen könnten einen falschen umask Satz haben als here diskutiert

Von Ihrem zuletzt, ich denke, man umask-027 gesetzt. Versuchen Sie zu tun

sudo pip uninstall loremipsum 
umask 022 
sudo pip install loremipsum 
+1

Für alle Interessierten ist umask ein Befehl, um die Standard-Zugriffsrechte für Dateien/Verzeichnisse festzulegen. Sehen Sie mehr [hier] (https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html) –

1

Verwenden Sie die --target Option, wenn Pip

Aufruf
pip install --target=/your/pyinstalldir loremipsum 

Das Zielverzeichnis muss ein Speicherort sein, der von Ihrem Benutzer beschreibbar ist.

Beachten Sie, dass jeder Benutzer eine Umgebung ordnungsgemäß einrichten muss, damit das Zielverzeichnis im Python-Pfad sichtbar ist.

Eine Möglichkeit, dies zu erreichen, besteht darin, dieses Verzeichnis systemweit an die Pfadvariable anzuhängen. Um zum Beispiel eine Datei wie diese Sie

# /etc/profile.d/myenvvars.sh 
export PYTHONPATH=/your/pyinstalldir