بعد تثبيت python 3.7.4 64 bit ، حاولت بدء بيئة افتراضية في مجلد. ومع ذلك ، تم بدء حوالي ألف عملية بيثون ولم تكتمل البيئة الافتراضية.
نظام التشغيل: Windows 10 Home
يعمل الكود في Cygwin 64 بت
رمز الفشل:
mkdir test
cd test
virtualenv venv
pip list
إصدار الحزمة
أسترويد 2.2.0
كولوراما 0.4.1
isort 4.3.9
وكيل lazy-object-proxy 1.3.1
مكابي 0.6.1
نقطة 19.1.1
pylint 2.3.0
حبل 0.14.0
برنامج setuptools 40.8.0
ستة 1.12.0
طبع- ast 1.3.1
Virtualenv 16.6.1
ملفوفة 1.11.1
حاولت تثبيت python و pip و virtualenv لأول مرة اليوم وواجهت نفس المشكلة.
لقد أصلحته من خلال التعليق على 3 أسطر في
Python\Python37\Lib\site-packages\virtualenv.py
وإضافة
-p python
عند تشغيل virtualenv
الأسطر التي علقت عليها هي 783-785:
if hasattr(sys, "_base_executable"):
print("hasattr(sys, \"_base_executable\") == yes")
return sys._base_executable
AndrYast بعد تفعيل البيئة هل ما زلت على 3.7.4؟ يبدو أن هذه مشكلة خاصة مع الإصدار 3.7.4 ، والذي تم إصداره بالأمس (7/8/19).
thingselliotprograms نعم ، قيد التشغيل
venv\Scripts\activate
python --version
يعطيني
Python 3.7.4
تواجه نفس المشكلة مع تعليق pipenv منذ ترقية Python أمس إلى 3.7.4. القضية الأساسية المتعلقة بـ virtualenv. تم تخفيض إصدار python إلى 3.7.3 في الوقت الحالي.
تم كسر أحدث إصدار من برنامج Ack virtualenv لأن https://github.com/python/cpython/pull/14428 يعين دائمًا sys._base_executable
.
أواجه نفس المشكلة مع 3.7.4. أنا أستخدم pipenv
وأحصل على [WinError 8] Not enough memory resources are available to process this command
. لا يمكنني إنشاء أي virtualenv. كل شيء يعمل بشكل رائع في 3.7.3.
أواجه هذه المشكلة بالضبط أيضًا مع 3.7.4.
رعد عمليات python.exe يستنفد الذاكرة ويفشل إنشاء virtualenv في النهاية.
لم تكن المشكلة موجودة مع 3.7.2.
عامل صيانة هنا. كما قلت أعلاه ، تغير العقد الخاص ببعض المتغيرات الداخلية لـ CPython ، وهذا يسبب الآن حلقة لا نهائية في إنشاء العملية لكل من python 3.7 و 3.8.
ليست لدي فكرة عما إذا كانت هذه فكرة _ جيدة ، لكنني تمكنت من إنشاء بيئة افتراضية بهذا الاختراق السريع.
# virtualenv.py:783
if hasattr(sys, "_base_executable") and sys.version_info < (3, 7, 4):
return sys._base_executable
بالحكم على التعليقات الموجودة أعلى هذا السطر ، يبدو أنك استمتعت ببعض المرح في إصدار سابق.
ربما يجب أن يكون هناك فحص إضافي sys._base_executable != sys.executable
. لكن بصراحة ، لا أعرف - يبدو أن هذا يتغير باستمرار في إصدارات التصحيح وليس لدي الوقت لمواكبة ما يحدث (يبدو أن كل ذلك مرتبط بالعمل على دعم إنشاء "متجر Windows" بايثون).
ربما تستطيع zooba التعليق أو تقديم اقتراحات هنا. نحن نستخدم عناصر داخلية غير موثقة ، لذا فإن الأمر متروك لنا في النهاية لمعالجته ، لكنني لا أعرف طريقة مدعومة للحصول على المعلومات التي نحتاجها ، لذلك لا أرى حلاً لن يخضع لـ كسر محتمل في كل مرة نحصل فيها على إصدار جديد من Python :-(
في النهاية ، ربما يكون # 1377 هو الحل الوحيد الموثوق هنا.
أعتقد أننا سنكون بخير طالما أضفنا هذا الشيك.
تفشل أيضًا وظائف Travis CI التي تعمل بنظام Windows ومحاولة إنشاء Virtualenv. انتقل ترافيس سي آي مؤخرًا إلى 3.7.4. 😞
https://travis-ci.community/t/infinite-loop-of-virtualenv-windows/4139
ربما معلومات مفيدة من ترافيس يبني:
version: v6.2.0 https://github.com/travis-ci/worker/tree/5e5476e01646095f48eec13196fdb3faf8f5cbf7
instance: travis-ci-onion-1803-containers-1542208204-ad01dca (via amqp)
bash version 4.4.19(2)-release
Chocolatey v0.10.11
python3 v3.7.4 [Approved]
python3 has been installed.
Successfully installed pip-19.1.1
Successfully installed virtualenv-16.6.1
$ virtualenv $HOME/venv
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
Running virtualenv with interpreter c:\python37\python.exe
...[repeats 763 more times]...
The command "virtualenv $HOME/venv" failed and exited with 1 during .
Your build has been stopped.
MemoryError
أعتقد أننا سنكون بخير طالما أضفنا هذا الشيك.
ألن يؤدي ذلك إلى إعادة تقديم (في 3.7.4) المشكلات التي كان المقصود من فحص base_executable إصلاحها؟ من المسلم به أن هذه المشكلات كانت أقل خطورة بكثير ، لذا من المحتمل أن الأمر لا يزال يستحق القيام به ، لكنني لا أعتقد أنه حل كامل.
لا أعتقد أنه يسبب التراجع ، أليس كذلك؟
لم أختبر بطريقة أو بأخرى (ولن يكون لدي وقت ، آسف).
ما الخلاصة هنا ، هل إصدار الإصلاح ممكن لـ virtualenv؟
نعم إنه كذلك إذا قام أي شخص بعمل علاقات عامة مع الإصلاح
هل لديك اختبار للانحدار الذي ذكرته؟
أعتقد أننا نفعل.
الاختبار ذي الصلة (المضاف في # 1345) هو test_create_environment_from_venv
- لكن لاحظ أنه يجب تشغيله في جميع Python 3.7.2 و 3.7.3 و 3.7.4 حيث يختلف السلوك في كل منها ( ثانوية) ، وهذا ليس شيئًا ستغطيه CI ، على حد علمي.
شكرًا للإصلاحات السريعة في جميع أنحاء الأشخاص ، أعتقد أن مقارنة base_executable
مع executable
يوفر مكافئًا وظيفيًا لمجرد التحقق من وجود السمة _base_executable
(ربما تكون أكثر أمانًا مثل هو أكثر وضوحا قليلا)
لدي فضول لمعرفة سبب المشكلة في المقام الأول.
تحتاج إلى الحصول على نظام python لإنشاء بيئة افتراضية. لن تنجح محاولة إنشاء بيئة افتراضية باستخدام حزمة venv أو virtualenv.
سابقًا ، تم تعيين sys._base_executable
على python 3.7+
فقط إذا لم نكن في نظام python. تم تغيير هذا مع PR أعلاه ليتم تعيينه دائمًا (إذا كانت Python غير النظام ستساوي sys.executable
). يعمل التغيير على تبسيط التعليمات البرمجية المضمنة لـ CPython (في جزء من مكتبة النظام القياسية واكتشاف حزمة الموقع) ، ومن هنا جاء التغيير ، ولكنه تغيير في العقد. ومع ذلك ، نظرًا لأنه سمة خاصة ، لم يتم التفكير في التغيير ، لذا لا بأس. ثم مرة أخرى لم نتمكن من الحصول على هذه المعلومات من مكان آخر لذلك كنا نعتمد على هذا المجال الخاص.
بايثون 3.7.4
تواجه نفس المشكلة ، نشر مخرجاتنا في حال كان ذلك مفيدًا:
Requirement already up-to-date: virtualenv in c:\users\tester\appdata\local\programs\python\python37\lib\site-packages (16.6.1)
Running virtualenv with interpreter c:\users\tester\appdata\local\programs\python\python37\python.exe
Running virtualenv with interpreter c:\users\tester\appdata\local\programs\python\python37\python.exe
Running virtualenv with interpreter c:\users\tester\appdata\local\programs\python\python37\python.exe
...
(Repeated 350 times in total)
Traceback (most recent call last):
File "c:\users\tester\appdata\local\programs\python\python37\lib\site-packages\virtualenv.py", line 2611, in <module>
main()
File "c:\users\tester\appdata\local\programs\python\python37\lib\site-packages\virtualenv.py", line 814, in main
sub_process_call = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env)
File "c:\users\tester\appdata\local\programs\python\python37\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "c:\users\tester\appdata\local\programs\python\python37\lib\subprocess.py", line 1178, in _execute_child
startupinfo)
OSError: [WinError 8] Not enough memory resources are available to process this command
ربما يمكن لبعض الأشخاص الذين يبلغون عن المشكلة هنا اختبار التغيير والتأكد من أنه يصلح مشكلتهم ولا يقدم أي كسر آخر؟
إنه يعمل مع Python 3.7.4 على Travis CI! لا أرى أي قضايا جديدة.
هذا هو تكوين Travis الذي استخدمته للاختبار (الجزء ذي الصلة):
- stage: test
os: windows
language: shell
env: PATH=/c/Python37:/c/Python37/Scripts:$PATH
before_install:
- choco install python
# python -m pip install virtualenv
- pip install git+https://github.com/pypa/virtualenv
- virtualenv $HOME/venv
- source $HOME/venv/Scripts/activate
النتائج (الأجزاء ذات الصلة):
Progress: Downloading python 3.7.4... 100%
python3 v3.7.4 [Approved]
python3 package files install completed. Performing other installation steps.
Installing 64-bit python3...
python3 has been installed.
Installed to: 'C:\Python37'
...
16.31s$ pip install git+https://github.com/pypa/virtualenv
Collecting git+https://github.com/pypa/virtualenv
Cloning https://github.com/pypa/virtualenv to c:\users\travis\appdata\local\temp\pip-req-build-ceb1gi36
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Preparing wheel metadata: started
Preparing wheel metadata: finished with status 'done'
Building wheels for collected packages: virtualenv
Building wheel for virtualenv (PEP 517): started
Building wheel for virtualenv (PEP 517): finished with status 'done'
Stored in directory: C:\Users\travis\AppData\Local\Temp\pip-ephem-wheel-cache-kx8oezso\wheels\8d\58\76\749812a30b0b5c5cdc1b327e343711660ee5ebf51cf56d2df5
Successfully built virtualenv
Installing collected packages: virtualenv
Successfully installed virtualenv-16.6.1
46.51s$ virtualenv $HOME/venv
Using base prefix 'c:\\python37'
New python executable in C:\Users\travis\venv\Scripts\python.exe
Installing setuptools, pip, wheel...
done.
0.16s$ source $HOME/venv/Scripts/activate
إنه يعمل مع Python 3.7.4 على Travis CI! لا أرى أي قضايا جديدة.
ممتاز ، شكرا للتأكيد
os: windows
لم أكن أدرك أن Travis قد وفرت بيئات Windows الآن ، وهذا مثير للاهتمام :-)
pfmoore يشددون على أن Windows "وصول مبكر" ولديه مشكلات (بشكل ملحوظ لا يمكنك استخدام الأسرار).
نعم ، تم طرح دعم Windows قبل حدوث أشياء #travisAlums مباشرةً ، IIRC (الشركة الأم الجديدة تقلصت فريق Travis بشكل كبير)
لدي هذا الرمز (في ملف virtualenv.py) لإصلاحه:
الأصل هو:
إذا hasattr (sys، "_base_executable"):
وتغيرت إلى:
إذا hasattr (sys، "_base_executable") وليس os.environ.get ("VIRTUALENV_INTERPRETER_RUNNING"):
من خلال القيام بذلك ، من شأنه إصلاح الحلقة
يجب إصدار الإصلاح عبر https://pypi.org/project/virtualenv/16.6.2/
تم اختباره للتو وتم إصلاحه بالفعل. شكرا جزيلا على الردود السريعة والجيدة لك.
التعليق الأكثر فائدة
عامل صيانة هنا. كما قلت أعلاه ، تغير العقد الخاص ببعض المتغيرات الداخلية لـ CPython ، وهذا يسبب الآن حلقة لا نهائية في إنشاء العملية لكل من python 3.7 و 3.8.