Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Python 3.6 : virtualenv | pipenv : errors

0 votes

J'essaye de comprendre cette histoire d'environnement virtuel. Je suis sous OpenBSD 6.5 avec Python 3.6.8.
(après avoir lu, cette doc, ou celle-ci...)

Bref, lors de l'exécution de l'environnement virtuel, je me retrouve avec cette erreur dont je ne comprend pas la raison :

$ virtualenv mybeautifullproject                                             
Using base prefix '/usr/local'
New python executable in $HOME/Prog/env.py/mybeautifullproject.py/mybeautifullproject/bin/python3
Also creating executable in $HOME/Prog/env.py/mybeautifullproject.py/mybeautifullproject/bin/python
ERROR: The executable $HOME/Prog/env.py/mybeautifullproject.py/mybeautifullproject/bin/python3 could not be run: [Errno 13] Permission denied: '$HOME/Prog/env.py/mybeautifullproject.py/mybeautifullproject/bin/python

$ ls -al mybeautifullproject/                                                 
total 40
drwxr-xr-x  5 hs  hs  512 Jun  3 01:43 ./
drwxr-xr-x  3 hs  hs  512 Jun  3 01:44 ../
drwxr-xr-x  2 hs  hs  512 Jun  3 01:43 bin/
drwxr-xr-x  2 hs  hs  512 Jun  3 01:43 include/
drwxr-xr-x  3 hs  hs  512 Jun  3 01:43 lib/

$ ls -al mybeautifullproject/bin/                                             
total 40
drwxr-xr-x  2 hs  hs    512 Jun  3 01:43 ./
drwxr-xr-x  5 hs  hs    512 Jun  3 01:43 ../
lrwxr-xr-x  1 hs  hs      7 Jun  3 01:43 python@ -> python3
-rwxr-xr-x  1 hs  hs  10680 Jun  3 01:43 python3*
lrwxr-xr-x  1 hs  hs      7 Jun  3 01:43 python3.6@ -> python3

Une idée ?

(au cas où j'ai essayé virtualenvwrapper - mais c'est pour bash - et le shell natif sous OpenBSD est pdksh)


Idem avec pipenv :

$ pipenv install requests
Warning: the environment variable LANG is not set!
We recommend setting this in ~/.profile (or equivalent) for proper expected behavior.
Creating a virtualenv for this project…
Pipfile: $HOME/Prog/env.py/mybeautifullproject.py/Pipfile
Using /usr/local/bin/python3 (3.6.8) to create virtualenv…
⠇ Creating virtual environment...Already using interpreter /usr/local/bin/python3
Using base prefix '/usr/local'
New python executable in $HOME/.local/share/virtualenvs/mybeautifullproject.py-oFlnu9vD/bin/python3
Also creating executable in $HOME/.local/share/virtualenvs/mybeautifullproject.py-oFlnu9vD/bin/python
ERROR: The executable $HOME/.local/share/virtualenvs/mybeautifullproject.py-oFlnu9vD/bin/python3 could not be run: [Errno 13] Permission denied: '$HOME/.local/share/virtualenvs/mybeautifullproject.py-oFlnu9vD/bin/python3'

✘ Failed creating virtual environment 
[pipenv.exceptions.VirtualenvCreationException]:   File "$HOME/.local/lib/python3.6/site-packages/pipenv/cli/command.py", line 254, in install
[pipenv.exceptions.VirtualenvCreationException]:       editable_packages=state.installstate.editables,
[pipenv.exceptions.VirtualenvCreationException]:   File "$HOME/.local/lib/python3.6/site-packages/pipenv/core.py", line 1741, in do_install
[pipenv.exceptions.VirtualenvCreationException]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.VirtualenvCreationException]:   File "$HOME/.local/lib/python3.6/site-packages/pipenv/core.py", line 574, in ensure_project
[pipenv.exceptions.VirtualenvCreationException]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.VirtualenvCreationException]:   File "$HOME/.local/lib/python3.6/site-packages/pipenv/core.py", line 506, in ensure_virtualenv
[pipenv.exceptions.VirtualenvCreationException]:       python=python, site_packages=site_packages, pypi_mirror=pypi_mirror
[pipenv.exceptions.VirtualenvCreationException]:   File "$HOME/.local/lib/python3.6/site-packages/pipenv/core.py", line 935, in do_create_virtualenv
[pipenv.exceptions.VirtualenvCreationException]:       extra=[crayons.blue("{0}".format(c.err)),]
[pipenv.exceptions.VirtualenvCreationException]: 
Failed to create virtual environment.

Bref, je ne sais quoi trop en penser ?!

Ici, on parle de l'option 'exec' sur le mount de home qui pourrait résoudre...
Ailleurs, on mentionne les droits... mais je suis dans mon home, exécuté avec mes droits, et pas ceux d'admin !

D'autant mon fichier 'fstab' :

$ cat /etc/fstab                                                                      
ef1ea0f909e0b8d8.b none swap sw
ef1ea0f909e0b8d8.a / ffs rw 1 1
ef1ea0f909e0b8d8.l /home ffs rw,nodev,nosuid 1 2
ef1ea0f909e0b8d8.d /tmp ffs rw,nodev,nosuid,noexec 1 2
ef1ea0f909e0b8d8.f /usr ffs rw,nodev 1 2
ef1ea0f909e0b8d8.g /usr/X11R6 ffs rw,nodev 1 2
ef1ea0f909e0b8d8.h /usr/local ffs rw,nodev,wxallowed 1 2
ef1ea0f909e0b8d8.j /usr/obj ffs rw,nodev,nosuid 1 2
ef1ea0f909e0b8d8.m /usr/ports ffs rw,nodev,nosuid 1 2
ef1ea0f909e0b8d8.i /usr/src ffs rw,nodev,nosuid 1 2
ef1ea0f909e0b8d8.e /var ffs rw,nodev,nosuid,noexec 1 2
ef1ea0f909e0b8d8.k /var/log ffs rw,nodev,nosuid,noexec 1 2

Et, au cas où on me poserait la question, paramétré explicitement 'exec' ne change rien... c'est par défaut.

demandé 7-Aou par hucste (114 points)

2 Réponses

0 votes

Il me semble que ton probleme c'est que tu te situe dans un endroit ou tu n'as pas les droits pour effectuer virtualenv.
Essaie d'effectuer ton virutalenv dans un dossier ou tu as les droits.
Tu peux toujours essayer de runer avec sudo mais c'est déconseillé et ca peut t'apporter des problème supplémentaire par la suite.

répondu 31-Aou par Watchgot
0 votes

En fait, c'est plus complexe que ça...
Je vais essayer de décrire la raison, qui pourra être utile à d'autres - solution trouvée en Juin, je n'étais pas revenu ici car je n'avais aucun retour de publication ici, donc j'avais oublié ce site !

Sous OpenBSD, nous avons la protection W^X active par défaut sur l'ensemble des partitions, seule la partition ''/usr/local'' est autorisée à utiliser des programmes qui pourraient/peuvent violer cette protection très efficace.

De deux choses l'une, soit il faut ajouter l'option de montage 'wxallowed' sur la partition home - solution simple, mais dangereuse - soit il faut créer un répertoire user dans ''/usr/local'' avec les droits adéquats, linké le répertoire en question vers le répertoire dédié python sous home, et zou...

Pour les détails, j'explique cela très bien sur le forum obsd4a ou sur mon blog.

répondu 3-Sep par hucste (114 points)
...