Virtualenv: OSError: [Errno 30] Nur-Lese-Dateisystem

Erstellt am 27. Dez. 2011  ·  27Kommentare  ·  Quelle: pypa/virtualenv

Ich habe angefangen, einen seltsamen Fehler zu bekommen, wenn ich versuche, neue Umgebungen zu erstellen:

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

Ich scheine unter anderen Umständen keine Probleme beim Erstellen von Symlinks zu haben.

Ich verwende Ubuntu 11.04 über Virtualbox - ich habe versucht, die Box von Grund auf zu zerstören und neu zu erstellen (mit einem unveränderten Puppet-Manifest), aber derselbe Fehler bleibt bestehen.

Hilfreichster Kommentar

Aktualisieren Sie virtualenv auf die neueste Version (1.11.6) und verwenden Sie es als

virtualenv --always-copy testenv

Die Optionen verwenden keine festen Links, sondern kopieren die Dateien

Alle 27 Kommentare

Da kann ich leider nicht viel machen, da ich den Fehler nicht reproduzieren kann. Ich weiß nicht, warum Sie einen schreibgeschützten Dateisystemfehler erhalten, es sei denn, das Dateisystem, auf dem Sie versuchen, die virtuelle Umgebung zu erstellen, ist tatsächlich schreibgeschützt.

Dieser Code hat sich in der Entwicklungsversion von virtualenv geändert, Sie könnten es also mit virtualenv==dev versuchen und sehen, ob das hilft.

Ich habe dieses Problem auch unter Ubuntu 11.04 auf Virtualbox. @rlayte Wenn Sie herausgefunden haben, wie Sie das lösen können, würde ich gerne wissen, wie.

Ich bin mir ziemlich sicher, dass dies jetzt ein Virtualbox-Problem ist, also sollte es wahrscheinlich mit ihnen angesprochen werden, wenn Sie eine echte Lösung dafür wollen.

Ich habe es "gelöst", indem ich das Verzeichnis .virtualenvs in einen nicht freigegebenen Ordner verschoben habe, da das Problem nur in mit OS X freigegebenen Ordnern besteht.

Aufgrund dieser Art von Instabilität habe ich mich letztendlich entschieden, von Virtualbox wegzugehen.

Am Ende habe ich der freigegebenen Ordnergruppe Schreibberechtigungen in OSX erteilt und sie dann in Ubuntu neu gemountet, und es schien das Problem zu lösen.

Huch, bin gerade auf dieses Problem gestoßen, aber ich denke, es ist ein VirtualBox-Fehler: https://www.virtualbox.org/ticket/10085#comment :12

Grundsätzlich funktionieren Symlinks aus Sicherheitsgründen nicht mehr in freigegebenen Ordnern.

Dies kann auf Virtualbox gelöst werden, wenn die Probleme durch freigegebene Ordner erstellt werden, indem Sie Folgendes ausführen:

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

Dadurch wird Ihre Umgebung nicht in Ihrem Ordner gespeichert, aber die beste Vorgehensweise besteht darin, requirements.txt zu verwenden und Ihrem VCS mitzuteilen, dass es Ihre Umgebungsstruktur ignorieren soll

Update : Eine gute Nachtruhe macht natürlich alles klarer. Die Installation von python-dev als sudo änderte die Berechtigungen in einigen Python-Dateien, die dazu führten, dass der Befehl virtualenv fehlschlug, aber ich kann das einfach als sudo ausführen und es funktioniert.

Ich sehe diesen gleichen Fehler. Wenn ich eine neue VM aus der Basisbox lucid32 erstelle und dann die folgenden Befehle ausführe:

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

Dann wird die erste virtuelle Umgebung erfolgreich erstellt, aber die zweite schlägt mit dem obigen [Errno 30] Read-only file system fehl. Ich habe die vollständige Ausgabe dieses Prozesses hier gepostet: https://gist.github.com/3346994. (Ich brauche python-dev für mysql-python.)

Weiß jemand, wie ich das beheben/umgehen könnte? Ich würde es nachdrücklich vorziehen, weiterhin freigegebene Ordner zu verwenden, und dies scheint anders zu sein als das Problem mit VirtualBox. Danke, und lassen Sie mich wissen, wenn ich weitere Informationen liefern kann!

sudo pip install virtualenv==dev hat es mir angetan. Ich bin auf OS X Lion-Host und Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-23-generic x86_64) als Gast.

Ich habe dies erneut bemerkt, als ich versuchte, eine neue VM einzurichten, und es scheint, dass eine Änderung zwischen virtualenv 1.8.2 und 1.8.3 dazu geführt hat, dass dieser Fehler erneut aufgetreten ist:

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

Ich kann jetzt 1.8.2 verwenden, dachte aber, ich würde es hier erwähnen. Danke!

@lehrblogger Könnten Sie strace -f virtualenv test ausführen, um festzustellen, welche Pfade den Fehler verursachen?

@brentsmyth Das relevante Bit ist nicht da. Verwenden Sie einen Pastebin oder einen Gist.

viel bessere idee...

http://pastebin.com/imzmMYFj

Das Problem liegt jedoch in Virtualbox. Unter diesen Links finden Sie einige Workaround-Optionen ...

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

@g2p !! Tut mir leid, dass ich so lange gebraucht habe, um dazu zu kommen, ich war unterwegs und muss die E-Mail verpasst haben.

https://gist.github.com/4211296

Ich verwende Mac OS X 10.8.2 und habe gerade ein Upgrade auf die neuesten Versionen von VirtualBox (4.2.4) und Vagrant (1.0.5) durchgeführt. Ich gebe gerne weitere Informationen, wenn es hilfreich wäre, und ich verspreche, dass ich schneller antworten werde :)

(Es ist in Ordnung, wenn ich eine der Problemumgehungen von VirtualBox verwenden muss, aber das Seltsame ist, dass es mit virtualenv 1.8.2 und nicht mit 1.8.4 funktioniert – siehe das Ende meiner Zusammenfassung.)

Ich bin auf das gleiche Problem gestoßen. Die Verwendung von VBoxManage setextradata, wie in https://www.virtualbox.org/ticket/10085 vorgeschlagen, hat für mich funktioniert. Aber dies ist eine weitere Kleinigkeit, die den Prozess des Ausführens eines virtuellen lokalen Entwicklungsservers unnötig umständlich macht :)

Ich konnte VBoxManage setextradata auch für mich zum Laufen bringen (mit virtualenv 1.8.4), indem ich "v-root" als meinen "SHARE_NAME" in meiner Vagranfile verwende, wie in diesem Kommentar vorgeschlagen. Danke an alle für die Infos/Vorschläge!

Meine Schritte zur Behebung:

  1. Verwenden Sie virtualenv==1.8.2 (funktioniert nicht mit 1.8.4!)
  2. setextradata im Host-Betriebssystem:
VBoxManage setextradata CENTOS VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/oe 1

, wobei CENTOS - Name des Virtualbox-Betriebssystems, /home/oe - Name des gemounteten Ordners

  1. Mounten Sie das Gerät im Gastbetriebssystem mit Lese-/Schreibberechtigungen:
sudo mount -t vboxsf -o rw,uid=1000 shared_folder /mnt/shared_folder

, wobei uid=1000 - UID des aktuellen Benutzers im Gastbetriebssystem (siehe /etc/passwd).

Aktualisieren Sie virtualenv auf die neueste Version (1.11.6) und verwenden Sie es als

virtualenv --always-copy testenv

Die Optionen verwenden keine festen Links, sondern kopieren die Dateien

Hier sind einige nützliche Informationen. Ich habe dieses Problem behoben:
http://forums.getpebble.com/discussion/5538/virtualbox-read-only-file-system

Der Lösungslink lautet:

http://www.ahtik.com/blog/fixing-your-virtualbox-shared-folder-symlink-error/#comment -1388791879

Ich habe diesen Fehler in einem freigegebenen Verzeichnis vom VM-Host erhalten. Als ich in ein Verzeichnis wechselte, das nicht freigegeben ist, war es in Ordnung.

@socrateslee Danke Kumpel. Du hast mir viel Ärger erspart!

Der Grund ist, dass Sie versucht haben, die virtuelle Umgebung in einem freigegebenen Ordner zu starten

OSError: [Errno 30] Nur-Lese-Dateisystem
Wenn Sie ein freigegebenes Laufwerk in vm verwenden und versuchen, tox in diesem Verzeichnis auszuführen, wird dieser Fehler ausgegeben. Eine einfache Lösung besteht darin, diesen Quellcode in ein Verzeichnis in vm zu kopieren, sagen wir in Ihr Home-Verzeichnis /home/sunil/projectName/ . und führen Sie den tox-Befehl in diesem Verzeichnis aus.

Tox hat jetzt eine Möglichkeit, keine symbolischen Links in der virtualenv zu verwenden .

`[testenv]

alwayscopy = True`

Ich verwende Virtual Box nicht und stehe vor diesem Problem. Ich weiß nicht, warum es in einem bestimmten Ordner nicht funktioniert. Ich habe chmod und chown gemacht, aber es funktioniert einfach nicht.

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

In meinem Fall war es setup.cfg mit leeren prefix= , die dieses Durcheinander verursachten.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen