Virtualenv: OSError: [Errno 30] Sistema de archivos de solo lectura

Creado en 27 dic. 2011  ·  27Comentarios  ·  Fuente: pypa/virtualenv

Empecé a recibir un error extraño al intentar crear nuevos entornos:

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

No parece que tenga problemas para crear enlaces simbólicos en otras circunstancias.

Estoy ejecutando Ubuntu 11.04 a través de Virtualbox. Intenté destruir y reconstruir la caja desde cero (usando un manifiesto de marionetas sin cambios), pero persiste el mismo error.

Comentario más útil

actualice virtualenv a la última versión (1.11.6) y utilícelo como

virtualenv --always-copy testenv

las opciones no usarán un enlace duro sino que copiarán los archivos

Todos 27 comentarios

Me temo que no hay mucho que pueda hacer aquí, ya que no puedo reproducir la falla. No sé por qué obtendría un error de sistema de archivos de solo lectura a menos que el sistema de archivos en el que está tratando de crear el entorno virtual sea de solo lectura.

Este código ha cambiado en la versión de desarrollo de virtualenv, por lo que puede probar con virtualenv==dev y ver si eso ayuda.

También tengo este problema en Ubuntu 11.04 en Virtualbox. @rlayte si descubriste cómo resolver esto, me encantaría saber cómo.

Estoy bastante seguro de que este es un problema de virtualbox ahora, por lo que probablemente debería plantearles si desea una solución real.

Lo 'resolví' moviendo el directorio .virtualenvs a una carpeta no compartida, ya que el problema solo existe en las carpetas compartidas con os x.

Finalmente decidí alejarme de virtualbox debido a este tipo de inestabilidad.

Terminé otorgando permisos de escritura al grupo de carpetas compartidas en OSX, luego lo volví a montar en Ubuntu y pareció resolver el problema.

Vaya, me encontré con este problema ahora mismo, pero creo que es un error de VirtualBox: https://www.virtualbox.org/ticket/10085#comment : 12

Básicamente, los enlaces simbólicos ya no funcionan en carpetas compartidas por razones de seguridad.

Esto se puede resolver en virtualbox cuando los problemas son creados por carpetas compartidas ejecutando:

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

Esto no almacenará su entorno en su carpeta, pero la mejor práctica es usar requirements.txt y decirle a su VCS que ignore su árbol de entorno.

Actualización : Por supuesto, una buena noche de sueño lo aclara todo. La instalación de python-dev como sudo cambió los permisos en algunos archivos de Python que causaron que el comando virtualenv fallara, pero puedo ejecutarlo como sudo y funciona.

Estoy viendo este mismo error. Si creo una máquina virtual nueva desde el cuadro base lucid32 y luego ejecuto los siguientes comandos:

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

Luego, el primer virtualenv se creará con éxito, pero el segundo fallará con el [Errno 30] Read-only file system anterior. He publicado el resultado completo de este proceso aquí: https://gist.github.com/3346994. (Necesito python-dev para mysql-python).

¿Alguien sabe cómo podría arreglar/trabajar alrededor de esto? Preferiría seguir usando carpetas compartidas, y esto parece diferente al problema con VirtualBox. Gracias, y avísame si puedo proporcionar más información!

sudo pip install virtualenv==dev hizo el truco para mí. Estoy en el host OS X Lion y Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-23-generic x86_64) como invitado.

Volví a notar esto cuando intenté configurar una máquina virtual nueva, y parece que un cambio entre virtualenv 1.8.2 y 1.8.3 hizo que volviera a aparecer ese error:

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

Puedo usar 1.8.2 por ahora, pero pensé en mencionarlo aquí. ¡Gracias!

@lehrblogger ¿Podría ejecutar strace -f virtualenv test para identificar qué rutas están causando el error?

@brentsmyth El bit relevante no está allí. Utilice un pastebin o una esencia.

idea mucho mejor...

http://pastebin.com/imzmMYFj

Sin embargo, el problema radica en virtualbox. Puede encontrar algunas opciones en estos enlaces...

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

@g2p !! Lo siento, me tomó tanto tiempo llegar a esto, estaba de viaje y debo haber perdido el correo electrónico.

https://gist.github.com/4211296

Estoy ejecutando Mac OS X 10.8.2 y acabo de actualizar a las últimas versiones de VirtualBox (4.2.4) y Vagrant (1.0.5). Me complace proporcionar más información si fuera útil, y prometo que responderé más rápido :)

(Está bien si tengo que usar una de las soluciones alternativas de VirtualBox, pero lo extraño es que funciona con virtualenv 1.8.2 y no con 1.8.4; vea el final de mi esencia).

Me encontré con el mismo problema. Usar VBoxManage setextradata como se propone en https://www.virtualbox.org/ticket/10085 funcionó para mí. Pero esta es otra pequeña cosa que hace que el proceso de ejecutar un servidor de desarrollo local virtual sea innecesario y engorroso :)

También pude hacer que VBoxManage setextradata funcione para mí (con virtualenv 1.8.4) usando "v-root" como mi "SHARE_NAME" en mi Vagranfile, como se sugiere en este comentario . ¡Gracias a todos por la información/sugerencias!

Mis pasos para solucionarlo:

  1. Use virtualenv==1.8.2 (¡no funciona con 1.8.4!)
  2. setextradata en el sistema operativo anfitrión:
VBoxManage setextradata CENTOS VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/oe 1

, donde CENTOS: nombre del SO de Virtualbox, /home/oe: nombre de la carpeta montada

  1. Monte el dispositivo en el sistema operativo invitado con permisos de lectura y escritura:
sudo mount -t vboxsf -o rw,uid=1000 shared_folder /mnt/shared_folder

, donde uid=1000 - uid del usuario actual en el sistema operativo invitado (ver /etc/passwd).

actualice virtualenv a la última versión (1.11.6) y utilícelo como

virtualenv --always-copy testenv

las opciones no usarán un enlace duro sino que copiarán los archivos

Recibí este error en un directorio compartido del host vm. Cuando cambié a un directorio que no se comparte, estuvo bien.

@socrateslee Gracias compañero. ¡Me ahorraste muchos problemas!

el motivo es que intentaste iniciar virtualenv en una carpeta compartida

OSError: [Errno 30] Sistema de archivos de solo lectura
si usa una unidad compartida dentro de vm e intenta ejecutar tox dentro de ese directorio, arrojará este error. La solución simple es copiar ese código fuente dentro de algún directorio en vm, digamos dentro de su directorio de inicio /home/sunil/projectName/ . y ejecute el comando tox dentro de este directorio.

Tox ahora tiene una forma de configurar el no uso de enlaces simbólicos en virtualenv .

`[testimoniov]

siempre copiar = Verdadero`

No estoy usando Virtual Box y estoy enfrentando este problema. No sé por qué en una carpeta específica no funciona. Hice chmod y chown pero simplemente no funciona.

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

En mi caso, fue setup.cfg con prefix= vacío lo que estaba causando este lío.

¿Fue útil esta página
0 / 5 - 0 calificaciones