Virtualenv: site.py غير متوافق مع python 2.7

تم إنشاؤها على ٩ نوفمبر ٢٠١٢  ·  24تعليقات  ·  مصدر: pypa/virtualenv

نحن نستخدم python 2.7 حصريًا ومن المفاجئ أن نكتشف اليوم أن site.py في جميع الحواف الافتراضية مع python 2.7 يستخدم موقع py2.6's site.py الذي يفتقر إلى العديد من الوظائف الجديدة المضافة في python 2.7.

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

كحل بديل: python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" يدير العثور على موقع دليل حزم مواقع Python الخاص بي

ال 24 كومينتر

هل يمكنك إعطاء مثال على ما لا يصلح لك؟

site.getsitepackages () لا يعمل.

مستنسخة على OS X:

$ virtualenv -p python2.7 ve
$ ./ve/bin/python -c 'import site; print(getattr(site, "getsitepackages"))'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'

الجري خارج venv يعمل بالنسبة لي -

`` `` $ python -c 'import site; print(getattr(site, "getsitepackages"))' <function getsitepackages at 0x104198410>

"" "

موقع استيراد $ ./ve/bin/python -c ؛ طباعة (موقع. ملف ) "
/private/tmp/ve/lib/python2.7/site.pyc
موقع استيراد $ python -c ؛ طباعة ( ملف موقع) '/ System / Library / Frameworks / Python.framework / Versions / 2.7 / lib / python2.7 / site.pyc

We ship our own `./virtualenv_embedded/site.py`

ضع في اعتبارك تحديث (والتأكد من توافقه مع الإصدارات السابقة) site.py

لا أعتقد أنه يجب وضع علامة على هذا باعتباره مانع تحرير. على الرغم من أنه سيكون من الرائع دعم ملفات site.py المتوافقة مع الميزات ، إلا أن هذا القصور ظل هكذا لسنوات.

"هذا النقص كان مثل هذا لسنوات". ونعم ، ما زال يؤلم ... :(
النظر في إصلاح هذا الرجاء ، thx

هذا عضني اليوم. سيكون من الرائع حقًا الحصول على تحديث site.py مُدرج في virtualenv لأن الإصدار 2.6 القديم لا يحتوي على أشياء مثل site.getusersitepackages() .

لقد عضني أيضًا ، وقد فاجأني. حتى أنني أتساءل الآن ما هي الملفات الأخرى التي تختلف عن نظام python (خاصة عند استخدام --system-site-packages ) وما هي "الأخطاء" الأخرى التي تنتظر ...

لا يزال صالحًا باستخدام Virtualenv 13.1.2 مع Python 2.7.6 ، وهو يعيق بعض أعمال التطوير التي أقوم بها.

إليك بعض العبث التفاعلي:

getitepackages غير موجود في virtualenv
$ virtualenv --version
13.1.2
$ virtualenv test
New python executable in test/bin/python
Installing setuptools, pip, wheel...done.
$ source test/bin/activate
$ which python
/home/user/test/bin/python
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
False
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
>>>
getitepackages موجودة في نظام Python
$ deactivate
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
True
>>> site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
>>>

تحرير: woah ...... قرأت للتو: https://github.com/pypa/virtualenv/pull/697
أعتقد أنه من الأفضل قضاء الوقت في معالجة الأسباب الجذرية ، بدلاً من هذه الأعراض المحددة. اعتمادًا على كيفية إجراء إعادة الكتابة ، فأنا على أتم استعداد لانتظار أي تغييرات يجب أن تحدث لحل هذه المشكلة ، لصالح التغييرات التي تمت مناقشتها في إعادة الكتابة.

التعليق الأصلي:
لقد تعرضت للعض من هذا أيضًا.

# Tried with and without --system-site-packages

[username@hostname] ~/dir $ virtualenv --system-site-packages venv
Using base prefix '/usr'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
[username@hostname] ~/dir $ venv/bin/python
Python 3.4.3 (default, Jul 28 2015, 18:20:59) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
>>> 

يرجى مراعاة تحديث site.py لتوفير site.getsitepackages()

ضرب هذه المشكلة مع # 555 ، والتي يمكن أن تتسبب في سلوك مختلف في بيئة افتراضية إذا قمت بالتشغيل مع -خطأ بسبب تحذير الإهمال. نظرًا لأن السموم تعتمد على هذه الحزمة للعمل داخليًا ، فلا ترى الكثير من الطرق للتغلب عليها.

+1 sad_panda والكثير من الدموع

+1 هذا الشيء لي اليوم ، الكود يعمل خارج virtualenv ولكن ليس في الداخل.

+1 لدغة ، هل هناك بعض التحديث؟ شكرا.

+1 نفس المشكلة مع rk (نواة بعيدة لـ Jupyter).

+ 1 bite ، يعمل خارج virtualenv ولكن ليس بالداخل.

الكل ، أعتقد أنه في الوقت الحالي قد يكون الحل الأفضل هو بيع site.py (أو أجزاء منه) في مشاريعك.

كحل بديل: python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" يدير العثور على موقع دليل حزم مواقع Python الخاص بي

+1

+1 لدغة ، هل هناك بعض التحديث؟ شكرا.

أنا أستخدم Virtualenv 15.0.1 على Ubuntu 16.04 64bit

+1 لدغة
(virtualenv 15.1.0 على CentOS 7.5.1804)

منذ أن انتقلت إلى py3 ، توقفت عن استخدام virtualenv وأستخدم python الخاص venv . باستخدام python 3.6+ ، يتكون الحد الأدنى venv من بضعة روابط رمزية:

$ python3.6 -m venv --without-pip grut
$ tree grut/
grut/
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── python -> python3.6
│   ├── python3 -> python3.6
│   └── python3.6 -> /usr/bin/python3.6
├── include
├── lib
│   └── python3.6
│       └── site-packages
├── lib64 -> lib
└── pyvenv.cfg

6 directories, 7 files

لذلك ، لا أكثر من virtualenv وكل ما يتعلق بها من المراوغات بالنسبة لي. HTH الناس الآخرين.

RemiCardona أنا أستخدم Python 3 venv بقدر ما أستطيع ، لكن للأسف لا يزال tox يستخدم virtualenv (حتى عند اختبار Python 3) ، لذلك واجهت هذه المشكلة في كل مرة أستخدم فيها tox لأتمتة الاختبار أو إجراء تكامل مستمر. 😞

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر. فقط أضف تعليقًا إذا كنت تريد إبقائه مفتوحًا. شكرا لمساهماتكم.

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