2015-10-14 2 views
11

Je cours Python sur un OS légèrement plus ancien, dont le système Python est à la version 2.6. Par conséquent, j'ai 2.7 installé dans mon répertoire personnel et utilisé ce Python pour obtenir pip, et utilisé ce pip pour installer virtualenvwrapper. J'ai doncPourquoi pip, dans un virtualenv, écrit-il/usr/lib?

$ which python pip virtaulenv virtualenvwrapper.sh 
/home/user/bin/python 
/home/user/bin/pip 
/home/user/.local/bin/virtualenv 
/home/user/.local/bin/virtualenvwrapper.sh 

J'utilise ces outils pour créer un virtualenv, et essayez d'installer un module

$ mkvirtualenv fred 
New python executable in fred/bin/python2.7.10 
Also creating executable in fred/bin/python 
Installing setuptools, pip, wheel...done. 
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/fred/bin/predeactivate 
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/fred/bin/postdeactivate 
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/fred/bin/preactivate 
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/fred/bin/postactivate 
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/fred/bin/get_env_details 

$ workon fred 
$ export PYTHONPATH=/home/user/.virtualenvs/fred/lib/python2.7/site-packages 
$ /home/user/.virtualenvs/fred/bin/easy_install --prefix=/home/user/.virtualenvs/fred pip 
Creating /home/user/.virtualenvs/fred/lib/python2.7/site-packages/site.py 
Searching for pip 
Best match: pip 7.1.2 
Adding pip 7.1.2 to easy-install.pth file 
Installing pip script to /home/user/.virtualenvs/fred/bin 
Installing pip3.4 script to /home/user/.virtualenvs/fred/bin 
Installing pip3 script to /home/user/.virtualenvs/fred/bin 

Using /home/user/.virtualenvs/fred/lib/python2.7/site-packages                           
Processing dependencies for pip 
Finished processing dependencies for pip 

$ which python pip 
/home/user/.virtualenvs/fred/bin/python 
/home/user/.virtualenvs/fred/bin/pip 

$ pip install itsdangerous 
Collecting itsdangerous 
Installing collected packages: itsdangerous 

Exception: 
Traceback (most recent call last): 
    File "/home/user/.local/lib/python2.7/site-packages/pip/basecommand.py", line 211, in main 
    status = self.run(options, args) 
    File "/home/user/.local/lib/python2.7/site-packages/pip/commands/install.py", line 311, in run 
    root=options.root_path, 
    File "/home/user/.local/lib/python2.7/site-packages/pip/req/req_set.py", line 646, in install 
    **kwargs 
    File "/home/user/.local/lib/python2.7/site-packages/pip/req/req_install.py", line 803, in install 
    self.move_wheel_files(self.source_dir, root=root) 
    File "/home/user/.local/lib/python2.7/site-packages/pip/req/req_install.py", line 998, in move_wheel_files 
    isolated=self.isolated, 
    File "/home/user/.local/lib/python2.7/site-packages/pip/wheel.py", line 341, in move_wheel_files 
    clobber(source, lib_dir, True) 
    File "/home/user/.local/lib/python2.7/site-packages/pip/wheel.py", line 319, in clobber 
    shutil.copyfile(srcfile, destfile) 
    File "/usr/lib64/python2.7/shutil.py", line 83, in copyfile 
    with open(dst, 'wb') as fdst: 
IOError: [Errno 13] Permission denied: '/usr/lib/python2.7/site-packages/itsdangerous.py' 

Pourquoi pip tente d'installer le module dans/usr/lib? Ne devrait-il pas être installé à ~/.virtualenvs/fred/lib, ou ~/lib?

+0

Quelle est votre '.pip/pip.conf'? – sobolevn

+0

Pas nécessairement une solution, mais vous pourrez peut-être vous en sortir en installant des paquets au niveau de l'utilisateur. 'pip install --user itsdangerous' – ThorSummoner

+1

@ThorSummoner - ne peut pas utiliser' --user' car j'en ai besoin installé dans le virtualenv, pas ~/.local – jalanb

Répondre

-8

Si vous avez votre mot de passe faire:

  • Étape 1 terminal ouvert et tapez sudo su et appuyez sur Entrée et tapez votre mot de passe maintenant votre terminal utilisateur a changé à la racine
  • Étape 2 Type pip install itsdangerous puis appuyez sur Entrée