Virtualenv: خطأ OS: [Errno 30] نظام ملفات للقراءة فقط

تم إنشاؤها على ٢٧ ديسمبر ٢٠١١  ·  27تعليقات  ·  مصدر: pypa/virtualenv

لقد بدأت في الحصول على خطأ غريب عند محاولة إنشاء بيئات جديدة:

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

يبدو أنني لا أجد صعوبة في إنشاء روابط رمزية تحت أي ظروف أخرى.

أنا أقوم بتشغيل Ubuntu 11.04 من خلال Virtualbox - لقد حاولت تدمير الصندوق وإعادة بنائه من نقطة الصفر (باستخدام بيان دمية غير متغير) ، ولكن نفس الخطأ استمر.

التعليق الأكثر فائدة

قم بترقية Virtualenv إلى أحدث إصدار (1.11.6) ، واستخدمه كملف

virtualenv --always-copy testenv

لن تستخدم الخيارات الرابط الصلب ولكن نسخ الملفات

ال 27 كومينتر

أخشى أنه ليس هناك الكثير الذي يمكنني القيام به هنا ، لأنني غير قادر على إعادة إنتاج الفشل. لا أعرف سبب حصولك على خطأ في نظام الملفات للقراءة فقط ما لم يكن نظام الملفات الذي تحاول إنشاء Virtualenv عليه للقراءة فقط.

تم تغيير هذا الرمز في إصدار تطوير Virtualenv ، لذا يمكنك تجربة virtualenv == dev ومعرفة ما إذا كان ذلك يساعدك.

أواجه هذه المشكلة أيضًا في Ubuntu 11.04 على Virtualbox. @ rlayte إذا اكتشفت كيفية حل هذا ، فأنا أحب أن أعرف كيف.

أنا متأكد من أن هذه مشكلة في Virtualbox الآن ، لذا من المحتمل أن تثار معهم إذا كنت تريد حلاً حقيقيًا لها.

لقد قمت بحلها عن طريق نقل دليل .virtualenvs إلى مجلد غير مشترك لأن المشكلة موجودة فقط في المجلدات المشتركة مع نظام التشغيل x.

قررت في النهاية الابتعاد عن Virtualbox بسبب هذا النوع من عدم الاستقرار.

انتهى بي الأمر بإعطاء مجموعة المجلدات المشتركة أذونات الكتابة في OSX ، ثم أعدتها في Ubuntu ، وبدا أنها تحل المشكلة.

عذرًا ، واجهت هذه المشكلة الآن ، لكنني أعتقد أنها خطأ في VirtualBox: https://www.virtualbox.org/ticket/10085#comment : 12

لم تعد الروابط الرمزية تعمل بشكل أساسي في المجلدات المشتركة لأسباب أمنية.

يمكن حل هذا في Virtualbox عندما يتم إنشاء المشكلات بواسطة المجلدات المشتركة عن طريق تشغيل:

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

لن يخزن هذا بيئتك في مجلدك ، ولكن أفضل الممارسات هي استخدام requirements.txt وإخبار VCS بتجاهل شجرة البيئة الخاصة بك

تحديث : بالطبع ، النوم الجيد ليلاً يجعل كل شيء أكثر وضوحًا. يؤدي تثبيت python-dev مثل sudo إلى تغيير الأذونات في بعض ملفات Python التي تسببت في فشل الأمر virtualenv ، لكن يمكنني تشغيل ذلك كما لو كان sudo وهو يعمل.

أرى هذا الخطأ نفسه. إذا قمت بإنشاء جهاز افتراضي جديد من مربع lucid32 الأساسي ثم قمت بتنفيذ الأوامر التالية:

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

ثم سيتم إنشاء Virtualenv الأول بنجاح ، لكن الثاني سيفشل مع [Errno 30] Read-only file system أعلاه. لقد قمت بنشر الناتج الكامل لهذه العملية هنا: https://gist.github.com/3346994. (أحتاج إلى python-dev لـ mysql-python.)

هل يعرف أي شخص كيف يمكنني إصلاح / حل هذا؟ أنا أفضل بشدة الاستمرار في استخدام المجلدات المشتركة ، وهذا يبدو مختلفًا عن المشكلة مع VirtualBox. شكرًا ، واسمحوا لي أن أعرف إذا كان بإمكاني تقديم المزيد من المعلومات!

sudo pip install virtualenv==dev فعل الحيلة بالنسبة لي. أنا على مضيف OS X Lion و Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-23-generic x86_64) كضيف.

لقد لاحظت هذا مرة أخرى عندما حاولت إعداد VM جديد ، ويبدو أن التغيير بين virtualenv 1.8.2 و 1.8.3 تسبب في عودة هذا الخطأ:

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

يمكنني استخدام 1.8.2 في الوقت الحالي ، لكنني أعتقد أنني سأذكرها هنا. شكرا!

lehrblogger هل يمكنك تشغيل strace -f virtualenv test لتحديد المسارات التي تسبب الخطأ؟

@ brentsmyth البتة ذات الصلة ليست موجودة. استخدم عجينة أو جوهر.

فكرة أفضل بكثير ...

http://pastebin.com/imzmMYFj

المشكلة تكمن في فيرتوال بوكس ​​بالرغم من ذلك. يمكنك العثور على بعض الحلول البديلة في هذه الروابط ...

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

@ g2p !! آسف ، لقد استغرق الأمر وقتًا طويلاً للوصول إلى هذا ، كنت مسافرًا ويجب أن فاتني البريد الإلكتروني.

https://gist.github.com/4211296

أنا أقوم بتشغيل Mac OS X 10.8.2 وقمت بالترقية إلى أحدث إصدارات VirtualBox (4.2.4) و Vagrant (1.0.5). يسعدني تقديم المزيد من المعلومات إذا كان ذلك مفيدًا ، وأعدك بأنني سأرد بسرعة أكبر :)

(لا بأس إذا اضطررت إلى استخدام أحد الحلول البديلة لـ VirtualBox ، ولكن الشيء الغريب هو أنه يعمل مع Virtualenv 1.8.2 وليس 1.8.4 - انظر نهاية جوهر بلدي.)

واجهتني نفس المشكلة. استخدام VBoxManage setextradata كما هو مقترح في https://www.virtualbox.org/ticket/10085 يعمل بالنسبة لي. ولكن هذا شيء صغير آخر يجعل عملية تشغيل خادم مطور محلي افتراضي غير ضرورية مرهقة :)

لقد تمكنت من الحصول على VBoxManage setextradata للعمل معي أيضًا (مع Virtualenv 1.8.4) باستخدام "v-root" باعتباره "SHARE_NAME" الخاص بي في ملف Vagranfile الخاص بي ، كما هو مقترح في هذا التعليق . شكرا للجميع للمعلومات / الاقتراحات!

خطواتي لإصلاحها:

  1. استخدم virtualenv == 1.8.2 (لا تعمل مع 1.8.4!)
  2. setextradata في نظام التشغيل المضيف:
VBoxManage setextradata CENTOS VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/oe 1

، حيث CENTOS - اسم Virtualbox OS ، / home / oe - اسم المجلد الذي تم تحميله

  1. تحميل الجهاز في نظام التشغيل الضيف مع أذونات القراءة والكتابة:
sudo mount -t vboxsf -o rw,uid=1000 shared_folder /mnt/shared_folder

، حيث uid = 1000 - uid للمستخدم الحالي في نظام التشغيل الضيف (انظر / etc / passwd).

قم بترقية Virtualenv إلى أحدث إصدار (1.11.6) ، واستخدمه كملف

virtualenv --always-copy testenv

لن تستخدم الخيارات الرابط الصلب ولكن نسخ الملفات

هنا بعض المعلومات المفيدة. لقد أصلحت هذه المشكلة:
http://forums.getpebble.com/discussion/5538/virtualbox-read-only-file-system

رابط الحل هو:

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

حصلت على هذا الخطأ في دليل مشترك من مضيف vm. عندما قمت بالتبديل إلى دليل غير مشترك ، كان الأمر جيدًا.

socrateslee شكرا يا صديقي. لقد أنقذتني الكثير من المتاعب!

السبب هو أنك حاولت بدء تشغيل virtualenv في مجلد مشترك

خطأ OS: [Errno 30] نظام ملفات للقراءة فقط
إذا كنت تستخدم محرك أقراص مشترك داخل جهاز افتراضي وتحاول تنفيذ مواد سامة داخل هذا الدليل ، فسيؤدي ذلك إلى ظهور هذا الخطأ. الحل البسيط هو نسخ كود المصدر هذا داخل دليل ما في vm ، دعنا نقول داخل دليل منزلك / home / sunil / projectName /. وتنفيذ الأمر Tox داخل هذا الدليل.

لدى Tox الآن طريقة لتعيين عدم استخدام الروابط الرمزية في virtualenv .

`[testenv]

Alwayscopy = True`

أنا لا أستخدم Virtual Box وأواجه هذه المشكلة. لا أعرف لماذا لا يعمل في مجلد معين. لقد فعلت chmod و chown لكنها لا تعمل.

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

في حالتي ، كان setup.cfg مع وجود prefix= فارغًا هو الذي تسبب في هذه الفوضى.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات