Python-future: Virtualenv + python-Future = virtualenv مكسورة

تم إنشاؤها على ٢٠ مايو ٢٠١٥  ·  18تعليقات  ·  مصدر: PythonCharmers/python-future

أبسط استنساخ:

$ virtualenv venv
$ ./venv/bin/pip install future virtualenv
Collecting future
  Using cached future-0.14.3.tar.gz
Collecting virtualenv
  Using cached virtualenv-12.1.1-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
  Running setup.py install for future
Successfully installed future-0.14.3 virtualenv-12.1.1
$ ./venv/bin/virtualenv -ppython3.4 venv34
Running virtualenv with interpreter /usr/bin/python3.4
Traceback (most recent call last):
  File "/home/anthony/venv/local/lib/python2.7/site-packages/virtualenv.py", line 8, in <module>
    import base64
  File "/usr/lib/python3.4/base64.py", line 9, in <module>
    import re
  File "/usr/lib/python3.4/re.py", line 336, in <module>
    import copyreg
  File "/home/anthony/venv/lib/python2.7/site-packages/copyreg/__init__.py", line 7, in <module>
    raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.

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

بالنسبة لـ Ubuntu 14.04 ، عملت هذه المجموعة بالنسبة لي:

  • قم بتثبيت pip لـ python 3.4 (https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • استبدل Virtualenv القديم (python 2.7 إلى python 3.4):
$ sudo pip3.4 install virtualenv
  • فقط للتحقق:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • الآن ، سيتم تشغيل الأوامر التالية:
$ virtualenv venv34
Using base prefix '/usr'
New python executable in venv34/bin/python3
Also creating executable in venv34/bin/python
Installing setuptools, pip, wheel...done.

$ ./venv34/bin/pip install virtualenv
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-13.1.2

$ ./venv34/bin/virtualenv -p python venv
Running virtualenv with interpreter /usr/bin/python
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.

$ /usr/bin/python --version
Python 2.7.6

$ ./venv/bin/pip install future virtualenv
Collecting future
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Successfully installed future-0.15.2 virtualenv-13.1.2

$ ./venv34/bin/pip install future
Collecting future
Installing collected packages: future
Successfully installed future-0.15.2
  • لتجنب أخطاء الترجمة من امتدادات Python المكتوبة بلغة C أو C ++ ( المرجع ):
$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y python3.4-dev
$ sudo apt-get install -y python3-software-properties

الآن ، تعمل السموم بشكل جميل :)

ال 18 كومينتر

هذا خطأ في virtualenv لأنه يشوش على مسارات الوحدة 2.7 و 3.4. هناك العديد من المشكلات المماثلة التي تم الإبلاغ عنها في المراحل الأولى:
https://github.com/pypa/virtualenv/issues/745
https://github.com/pypa/virtualenv/issues/671
https://github.com/pypa/virtualenv/issues/625
https://github.com/pypa/virtualenv/pull/697

من الأفضل استخدام pyvenv الذي يأتي مع Python 3.3+ في الوقت الحالي.

لا يعد pyvenv حقًا خيارًا لاستهداف قاعدة الكود 2 + 3 (لا سيما بالنظر إلى العديد من الحالات التي لا يكون pyvenv مناسبًا لها تمامًا (ولا يمكن إصلاحه بسبب تقطعت به السبل في stdlib)). هل ستكون هناك خطط محتملة لفصل البتات المفيدة (backports ، التحركات ، إلخ) من التظليل لأسماء وحدات py3؟

شكرا لذكر هذا ، أنتوني. أعتقد أن وجود مجلد Python 2.7 site-packages يمكن الوصول إليه من قبل مترجم Python 3.4 سيؤدي إلى الكثير من الانقطاع بشكل عام. لذلك أتفق مع إليوت في أن هذا خطأ في Virtualenv. (ربما ظهور الخطأ رقم 673).

يجب أن أعترف أنني لم أستخدم Virtualenv لمدة عامين (منذ أن اكتشفت conda). سأحاول أن أجد بعض الوقت للتلاعب بها أكثر لمعرفة ما يحدث. لكن ، بقراءة https://github.com/pypa/virtualenv/pull/697 ، أشك في أنه عش طائر من الاختراقات الهشة ...

هل يمكنك معالجة السؤال؟ ربما يكون جيدًا لإغلاقه مثل wontfix بعد الإجابة على ما أعتقد.

هل ستكون هناك خطط محتملة لفصل البتات المفيدة (backports ، التحركات ، إلخ) من التظليل لأسماء وحدات py3؟

qulogicedschofield هذا في الواقع تأثير لتعدين pythonpath الذي نقوم به في شركتنا. لقد قمنا منذ ذلك الحين بإخراجها في الحسبان.

مونج *

bukzor إنه ليس كذلك في الواقع ، انظر إلى استنساخي

لقد واجهت هذه المشكلة للتو ، يبدو أنها كانت مقدمة في Virtualenv 12.04 ، لقد بدأت في التثبيت على virtualenv 12.02 دون مشاكل

fwiw ، هذا هو الالتزام الذي مكّنه من العمل من جانب virtualenv: https://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030

ومع ذلك ، تم إرجاعه لاحقًا بسبب التسبب في حدوث مشكلات (؟) في دبيان.

لقد أنشأت برنامجًا نصيًا لبرنامج التضمين الخاص بي لـ virtualenv والذي يحل هذه المشكلة أيضًا: https://github.com/asottile/virtualenv-hax

كان لديه نفس المشكلة. أدى الرجوع إلى إصدار Virtualenv 12.0.2 إلى حل المشكلة.

تعاني من نفس المشكلة. روايتي هي 13.1.2. اضطررت إلى الرجوع إلى 12.0.2 كما ذكر فاليريميلو.

خفضت إلى 12.0.2 عملت بالنسبة لي أيضا

هل سيقومون بإصلاح الخلل أم ماذا؟

بالنسبة لـ Ubuntu 14.04 ، عملت هذه المجموعة بالنسبة لي:

  • قم بتثبيت pip لـ python 3.4 (https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • استبدل Virtualenv القديم (python 2.7 إلى python 3.4):
$ sudo pip3.4 install virtualenv
  • فقط للتحقق:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • الآن ، سيتم تشغيل الأوامر التالية:
$ virtualenv venv34
Using base prefix '/usr'
New python executable in venv34/bin/python3
Also creating executable in venv34/bin/python
Installing setuptools, pip, wheel...done.

$ ./venv34/bin/pip install virtualenv
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-13.1.2

$ ./venv34/bin/virtualenv -p python venv
Running virtualenv with interpreter /usr/bin/python
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.

$ /usr/bin/python --version
Python 2.7.6

$ ./venv/bin/pip install future virtualenv
Collecting future
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Successfully installed future-0.15.2 virtualenv-13.1.2

$ ./venv34/bin/pip install future
Collecting future
Installing collected packages: future
Successfully installed future-0.15.2
  • لتجنب أخطاء الترجمة من امتدادات Python المكتوبة بلغة C أو C ++ ( المرجع ):
$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y python3.4-dev
$ sudo apt-get install -y python3-software-properties

الآن ، تعمل السموم بشكل جميل :)

مرحبًا يا رفاق ، لقد رأيت آرائكم ، وتوصيات fernandojunior تعمل بالنسبة لي ، لكنني الآن أقوم بتحديث Virtualenv الخاص بي إلى 14.0.5 وتم إصلاح المشكلة في هذا الإصدار ، حاليًا أنا أعمل في مضيفي باستخدام linuxmint 17.3 x64

ماذا تفعل عند تلقي نفس الخطأ ولكن باستخدام بيئات كوندا؟

الإغلاق حيث توقفت هذه المحادثة ويبدو أنه لا يوجد أي إجراء متبقي لـ python-future . الرجاء إعادة الفتح إذا كنت مخطئا :)

نعم! نعم! تم عمل هذا في مشروع virtualenv

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