Virtualenv: OSError : [Errno 30] Système de fichiers en lecture seule

Créé le 27 déc. 2011  ·  27Commentaires  ·  Source: pypa/virtualenv

J'ai commencé à avoir une erreur étrange lorsque j'essayais de créer de nouveaux environnements :

Traceback (most recent call last):
     File "/usr/local/bin/virtualenv", line 9, in <module>
       load_entry_point('virtualenv==1.7', 'console_scripts', 'virtualenv')()
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 928, in main
       never_download=options.never_download)
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 1029, in create_environment
       site_packages=site_packages, clear=clear))
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 1145, in install_python
       fix_local_scheme(home_dir)
     File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 1430, in fix_local_scheme
       os.symlink(os.path.abspath(home_dir), local_path)
OSError: [Errno 30] Read-only file system

Je ne semble pas avoir de difficulté à créer des liens symboliques dans d'autres circonstances.

J'exécute Ubuntu 11.04 via Virtualbox - j'ai essayé de détruire et de reconstruire la boîte à partir de zéro (en utilisant un manifeste de marionnette inchangé), mais la même erreur persiste.

Commentaire le plus utile

mettre à niveau virtualenv vers la dernière version (1.11.6) et l'utiliser comme

virtualenv --always-copy testenv

les options n'utiliseront pas de lien physique mais copieront les fichiers

Tous les 27 commentaires

Je crains que je ne puisse pas faire grand-chose ici, car je ne suis pas en mesure de reproduire l'échec. Je ne sais pas pourquoi vous obtiendrez une erreur de système de fichiers en lecture seule à moins que le système de fichiers sur lequel vous essayez de créer le virtualenv ne soit en fait en lecture seule.

Ce code a changé dans la version de développement de virtualenv, vous pouvez donc essayer avec virtualenv==dev et voir si cela aide.

J'ai également ce problème sur Ubuntu 11.04 sur Virtualbox. @rlayte si vous avez trouvé comment résoudre ce problème, j'aimerais savoir comment.

Je suis à peu près sûr qu'il s'agit d'un problème de virtualbox maintenant, il devrait donc probablement être soulevé avec eux si vous voulez une vraie solution.

Je l'ai "résolu" en déplaçant le répertoire .virtualenvs dans un dossier non partagé car le problème n'existe que sur les dossiers partagés avec os x.

J'ai finalement décidé de m'éloigner de virtualbox à cause de ce genre d'instabilité.

J'ai fini par donner au groupe de dossiers partagés des autorisations d'écriture dans OSX, puis je l'ai remonté dans Ubuntu, et cela a semblé résoudre le problème.

Aïe, j'ai rencontré ce problème tout à l'heure, mais je pense que c'est un bogue de VirtualBox : https://www.virtualbox.org/ticket/10085#comment :12

Fondamentalement, les liens symboliques ne fonctionnent plus dans les dossiers partagés pour des raisons de sécurité.

Cela peut être résolu sur virtualbox lorsque les problèmes sont créés par des dossiers partagés en exécutant :

virtualenv ~/[my-env-name]
source ~/[my-env-name]/bin/activate

Cela ne stockera pas votre environnement dans votre dossier, mais la meilleure pratique consiste à utiliser requirements.txt et à dire à votre VCS d'ignorer votre arborescence d'environnement

Mise à jour : Bien sûr, une bonne nuit de sommeil rend tout plus clair. L'installation de python-dev en tant que sudo a modifié les autorisations dans certains fichiers Python, ce qui a provoqué l'échec de la commande virtualenv, mais je peux simplement l'exécuter en tant que sudo et cela fonctionne.

Je vois cette même erreur. Si je crée une nouvelle machine virtuelle à partir de la boîte de base lucid32, puis que j'exécute les commandes suivantes :

  • sudo apt-get install python-pip
  • sudo pip install virtualenv
  • cd /vagrant/
  • virtualenv test0
  • sudo apt-get install python-dev
  • virtualenv test1

Ensuite, le premier virtualenv sera créé avec succès, mais le second échouera avec le [Errno 30] Read-only file system ci-dessus. J'ai publié le résultat complet de ce processus ici : https://gist.github.com/3346994. (J'ai besoin de python-dev pour mysql-python.)

Est-ce que quelqu'un sait comment je pourrais résoudre / contourner ce problème? Je préférerais fortement continuer à utiliser des dossiers partagés, et cela semble différent du problème avec VirtualBox. Merci et faites-moi savoir si je peux fournir plus d'informations!

sudo pip install virtualenv==dev a fait l'affaire pour moi. Je suis sur l'hôte OS X Lion et Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-23-generic x86_64) en tant qu'invité.

J'ai remarqué cela à nouveau lorsque j'ai essayé de configurer une nouvelle machine virtuelle, et il semble qu'un changement entre virtualenv 1.8.2 et 1.8.3 a provoqué le retour de cette erreur :

vagrant<strong i="6">@lucid32</strong>:/vagrant$ virtualenv test
New python executable in test/bin/python
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 9, in <module>
    load_entry_point('virtualenv==1.8.3', 'console_scripts', 'virtualenv')()
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 961, in main
    never_download=options.never_download)
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1062, in create_environment
    site_packages=site_packages, clear=clear))
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1482, in install_python
    os.symlink(py_executable_base, full_pth)
OSError: [Errno 30] Read-only file system

Je peux utiliser 1.8.2 pour l'instant, mais j'ai pensé que je le mentionnerais ici. Merci!

@lehrblogger Pourriez-vous exécuter strace -f virtualenv test pour identifier les chemins à l'origine de l'erreur?

@brentsmyth Le bit pertinent n'est pas là. Utilisez un pastebin ou un gist.

bien meilleure idée...

http://pastebin.com/imzmMYFj

Le problème réside cependant dans la virtualbox. Vous pouvez trouver des options de contournement dans ces liens...

https://github.com/mitchellh/vagrant/issues/713
http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/

@g2p !! Désolé, il m'a fallu si longtemps pour y arriver, j'étais en voyage et j'ai dû manquer l'e-mail.

https://gist.github.com/4211296

J'utilise Mac OS X 10.8.2 et je viens de passer aux dernières versions de VirtualBox (4.2.4) et Vagrant (1.0.5). Je suis heureux de fournir plus d'informations si cela peut être utile, et je promets de répondre plus rapidement :)

(C'est bien si je dois utiliser l'une des solutions de contournement de VirtualBox, mais ce qui est étrange, c'est que cela fonctionne avec virtualenv 1.8.2 et non 1.8.4 - voir la fin de mon essentiel.)

J'ai rencontré le même problème. L'utilisation de VBoxManage setextradata comme proposé dans https://www.virtualbox.org/ticket/10085 a fonctionné pour moi. Mais c'est une autre petite chose qui rend inutile le processus d'exécution d'un serveur de développement local virtuel :)

J'ai également réussi à faire fonctionner VBoxManage setextradata pour moi (avec virtualenv 1.8.4) en utilisant "v-root" comme mon "SHARE_NAME" dans mon Vagranfile, comme suggéré dans this comment . Merci à tous pour les infos/suggestions !

Mes étapes pour y remédier :

  1. Utilisez virtualenv==1.8.2 (ne fonctionne pas avec 1.8.4 !)
  2. setextradata dans le système d'exploitation hôte :
VBoxManage setextradata CENTOS VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/oe 1

, où CENTOS - nom du système d'exploitation Virtualbox, /home/oe - nom du dossier monté

  1. Montez l'appareil dans le système d'exploitation invité avec des autorisations de lecture-écriture :
sudo mount -t vboxsf -o rw,uid=1000 shared_folder /mnt/shared_folder

, où uid=1000 - uid de l'utilisateur actuel dans le système d'exploitation invité (voir /etc/passwd).

mettre à niveau virtualenv vers la dernière version (1.11.6) et l'utiliser comme

virtualenv --always-copy testenv

les options n'utiliseront pas de lien physique mais copieront les fichiers

J'ai eu cette erreur sur un répertoire partagé à partir de l'hôte vm. Lorsque je suis passé à un répertoire qui n'est pas partagé, tout allait bien.

@socrateslee Merci mon pote. Vous m'avez épargné bien des soucis !

la raison en est que vous avez essayé de démarrer le virtualenv dans un dossier partagé

OSError : [Errno 30] Système de fichiers en lecture seule
si vous utilisez un lecteur partagé dans vm et que vous essayez d'exécuter tox dans ce répertoire, cette erreur sera générée. Une solution simple consiste à copier ce code source dans un répertoire de vm, disons dans votre répertoire personnel /home/sunil/projectName/ . et exécutez la commande tox dans ce répertoire.

Tox a maintenant un moyen de ne pas utiliser de liens symboliques dans le virtualenv .

`[testenv]

toujours copier = Vrai`

Je n'utilise pas Virtual Box et je suis confronté à ce problème. Je ne sais pas pourquoi dans un dossier spécifique cela ne fonctionne pas. J'ai fait chmod et chown mais ça ne marche pas.

ERROR: Could not install packages due to an EnvironmentError.
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/commands/install.py", line 414, in run
    use_user_site=options.use_user_site,
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/req/__init__.py", line 58, in install_given_reqs
    **kwargs
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/req/req_install.py", line 920, in install
    use_user_site=use_user_site, pycompile=pycompile,
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/req/req_install.py", line 448, in move_wheel_files
    warn_script_location=warn_script_location,
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/wheel.py", line 426, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/wheel.py", line 357, in clobber
    ensure_dir(dest)  # common for the 'include' path
  File "/usr/local/lib/python3.7/site-packages/virtualenv_support/pip-19.1.1-py2.py3-none-any.whl/pip/_internal/utils/misc.py", line 99, in ensure_dir
    os.makedirs(path)
  File "/Users/aw3/Projects/python/platzi-python/appengine_contact_server/venv/bin/../lib/python3.7/os.py", line 211, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/Users/aw3/Projects/python/platzi-python/appengine_contact_server/venv/bin/../lib/python3.7/os.py", line 211, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/Users/aw3/Projects/python/platzi-python/appengine_contact_server/venv/bin/../lib/python3.7/os.py", line 221, in makedirs
    mkdir(name, mode)
OSError: [Errno 30] Read-only file system: '/lib'
Cleaning up...
Removed build tracker '/private/var/folders/31/j0bhpp4s3qx1kcpz6fnq__b40000gn/T/pip-req-tracker-ry41njg8'
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 870, in main
    symlink=options.symlink,
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 1173, in create_environment
    install_wheel(to_install, py_executable, search_dirs, download=download)
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 1019, in install_wheel
    _install_wheel_with_search_dir(download, project_names, py_executable, search_dirs)
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 1110, in _install_wheel_with_search_dir
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=script)
  File "/usr/local/lib/python3.7/site-packages/virtualenv.py", line 963, in call_subprocess
    raise OSError("Command {} failed with error code {}".format(cmd_desc, proc.returncode))
OSError: Command /Users/aw3/Projects/...r/venv/bin/python3.7 - setuptools pip wheel failed with error code 1

Dans mon cas, c'était setup.cfg avec prefix= vide qui causait ce gâchis.

Cette page vous a été utile?
0 / 5 - 0 notes