Virtualenv: OSError: [Errno 30] Sistema de arquivos somente leitura

Criado em 27 dez. 2011  ·  27Comentários  ·  Fonte: pypa/virtualenv

Comecei a receber um erro estranho ao tentar criar novos ambientes:

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

Não pareço ter problemas para criar links simbólicos em nenhuma outra circunstância.

Estou executando o Ubuntu 11.04 através do Virtualbox - tentei destruir e reconstruir a caixa do zero (usando um manifesto de marionete inalterado), mas o mesmo erro persiste.

Comentários muito úteis

atualize o virtualenv para a versão mais recente (1.11.6) e use-o como

virtualenv --always-copy testenv

as opções não usarão o link físico, mas copiarão os arquivos

Todos 27 comentários

Receio que não haja muito que eu possa fazer aqui, pois não sou capaz de reproduzir a falha. Não sei por que você receberia um erro de sistema de arquivos somente leitura, a menos que o sistema de arquivos em que você está tentando criar o virtualenv seja de fato somente leitura.

Este código mudou na versão de desenvolvimento do virtualenv, então você pode tentar com virtualenv==dev e ver se isso ajuda.

Também estou tendo esse problema no Ubuntu 11.04 no Virtualbox. @rlayte se você descobriu como resolver isso, adoraria saber como.

Tenho certeza de que este é um problema de caixa virtual agora, então provavelmente deve ser levantado com eles se você quiser uma solução real para isso.

Eu 'resolvi' movendo o diretório .virtualenvs para uma pasta não compartilhada, pois o problema só existe em pastas compartilhadas com os x.

Por fim, decidi me afastar do virtualbox devido a esse tipo de instabilidade.

Acabei dando permissões de gravação ao grupo de pastas compartilhadas no OSX, remontei-o no Ubuntu e pareceu resolver o problema.

Caramba, encontrei esse problema agora, mas acho que é um bug do VirtualBox: https://www.virtualbox.org/ticket/10085#comment :12

Basicamente, os links simbólicos não funcionam mais em pastas compartilhadas por motivos de segurança.

Isso pode ser resolvido no virtualbox quando os problemas são criados por pastas compartilhadas executando:

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

Isso não armazenará seu ambiente em sua pasta, mas a prática recomendada é usar requirements.txt e dizer ao seu VCS para ignorar sua árvore de ambiente

Atualização : Claro, uma boa noite de sono deixa tudo mais claro. A instalação do python-dev como sudo alterou as permissões em alguns arquivos Python que causaram a falha do comando virtualenv, mas posso executar isso como sudo e funciona.

Estou vendo esse mesmo erro. Se eu criar uma nova VM a partir da caixa lucid32 base e, em seguida, executar os seguintes comandos:

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

Em seguida, o primeiro virtualenv será criado com sucesso, mas o segundo falhará com o [Errno 30] Read-only file system acima. Publiquei a saída completa desse processo aqui: https://gist.github.com/3346994. (Eu preciso de python-dev para mysql-python.)

Alguém sabe como posso corrigir/contornar isso? Eu prefiro continuar usando pastas compartilhadas, e isso parece diferente do problema com o VirtualBox. Obrigado, e deixe-me saber se eu puder fornecer mais informações!

sudo pip install virtualenv==dev fez o truque para mim. Estou no host OS X Lion e Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-23-generic x86_64) como convidado.

Percebi isso novamente quando tentei configurar uma nova VM e parece que uma alteração entre virtualenv 1.8.2 e 1.8.3 fez com que esse erro voltasse:

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

Eu posso usar 1.8.2 por enquanto, mas pensei em mencionar aqui. Obrigado!

@lehrblogger Você poderia executar strace -f virtualenv test , para identificar quais caminhos estão causando o erro?

@brentsmyth A parte relevante não está lá. Use um pastebin ou uma essência.

ideia muito melhor...

http://pastebin.com/imzmMYFj

O problema está no virtualbox embora. Você pode encontrar algumas opções de solução nesses links ...

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

@g2p !! Desculpe ter demorado tanto para chegar a isso, eu estava viajando e devo ter perdido o e-mail.

https://gist.github.com/4211296

Estou executando o Mac OS X 10.8.2 e acabei de atualizar para as versões mais recentes do VirtualBox (4.2.4) e Vagrant (1.0.5). Fico feliz em fornecer mais informações se forem úteis e prometo responder mais rapidamente :)

(Tudo bem se eu tiver que usar uma das soluções alternativas do VirtualBox, mas o estranho é que ele funciona com virtualenv 1.8.2 e não 1.8.4 - veja o final da minha essência.)

Eu tive o mesmo problema. Usar o VBoxManage setextradata conforme proposto em https://www.virtualbox.org/ticket/10085 funcionou para mim. Mas isso é outra coisinha que torna o processo de execução de um servidor dev local virtual desnecessário complicado :)

Consegui fazer com que o VBoxManage setextradata funcione para mim também (com virtualenv 1.8.4) usando "v-root" como meu "SHARE_NAME" no meu Vagranfile, conforme sugerido neste comentário . Obrigado a todos pelas informações/sugestões!

Meus passos para corrigi-lo:

  1. Use virtualenv==1.8.2 (não funciona com 1.8.4!)
  2. setextradata no sistema operacional host:
VBoxManage setextradata CENTOS VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/oe 1

, onde CENTOS - nome do SO Virtualbox, /home/oe - nome da pasta montada

  1. Monte o dispositivo no sistema operacional convidado com permissões de leitura e gravação:
sudo mount -t vboxsf -o rw,uid=1000 shared_folder /mnt/shared_folder

, onde uid=1000 - uid do usuário atual no sistema operacional convidado (consulte /etc/passwd).

atualize o virtualenv para a versão mais recente (1.11.6) e use-o como

virtualenv --always-copy testenv

as opções não usarão o link físico, mas copiarão os arquivos

Recebi este erro em um diretório compartilhado do host vm. Quando mudei para um diretório que não é compartilhado, tudo bem.

@sócrateslee Obrigado amigo. Você me salvou de muitos problemas!

o motivo é que você tentou iniciar o virtualenv em uma pasta compartilhada

OSError: [Errno 30] Sistema de arquivos somente leitura
se você estiver usando uma unidade compartilhada dentro de vm e tentando executar o tox dentro desse diretório, ele lançará esse erro. A solução simples é copiar esse código-fonte dentro de algum diretório em vm, digamos dentro do seu diretório inicial /home/sunil/projectName/ . e execute o comando tox dentro deste diretório.

O Tox agora tem uma maneira de não usar links simbólicos no virtualenv .

`[testemv]

semprecopiar = Verdadeiro`

Não estou usando o Virtual Box e estou enfrentando esse problema. Não sei por que em uma pasta específica não funciona. Eu fiz chmod e chown, mas simplesmente não 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

No meu caso, era setup.cfg com prefix= vazio que estava causando essa bagunça.

Esta página foi útil?
0 / 5 - 0 avaliações