Virtualenv: اختياريا ، أنشئ رابط pythonw في virtualenv لإطار عمل python يبني على osx

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

http://groups.google.com/group/python-virtualenv/browse_thread/thread/83fa4a12d22a30c8/744e19c194f1618a؟#744e19c194f1618a تفاصيل حول كيفية تمكين wxpython للبيثون على OSX في أنظمة Winvs الافتراضية عن طريق التناظرية مع الطريقة التي يعمل بها حاليًا وسيجوين أوضاع التثبيت.

مناقشة إيان السابقة على هذا المنوال هنا:
http://groups.google.com/group/python-virtualenv/browse_thread/thread/b119a3c26aa49238
ويتم سرد الكود الذي يقوم بذلك في الوقت الحالي هنا:
http://github.com/gldnspud/virtualenv-pythonw-osx/

هل يمكننا إدخال هذا في التوزيع الأساسي؟ ما الذي يجب تغييره في هذا النهج؟


enhancement

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

حاول تغيير الواجهة الخلفية لـ matplotlib لجعل matplotlib يعمل في بيئة افتراضية:

يوجد (على الأقل) حلين استخدمتهما ، مع بعض الطرق الإضافية المدرجة أدناه. كلاهما مذكوران هنا يجب أن يكونا لنفس الشيء بنهج مختلف قليلاً:

إذا قمت بالفعل بتثبيت matplotlib باستخدام نقطة على بيئتك الافتراضية ، فيمكنك ...

_1. أضف ملف matplotlibrc جديد لبيئتك الافتراضية_
على سبيل المثال ، في بيئتك الافتراضية ، قم بتشغيل:

$ cd ~/.matplotlib
$ nano matplotlibrc #to create file using nano

اكتب backend: TkAgg في الملف واحفظه عند الخروج. يجب أن تكون على ما يرام.

_OR _

_2. قم بتحرير ملف matplotlibrc المشار إليه بواسطة البيئة الافتراضية الخاصة بك_
في بيئتك الافتراضية ، افتح قشرة بيثون وقم بتشغيل:

import matplotlib
matplotlib.matplotlib_fname()
'/home/foo/.config/matplotlib/matplotlibrc'

ملاحظة / تحديث: إذا ظهر لك خطأ في بناء الجملة في بيئتك الافتراضية ، فقد تحتاج ببساطة إلى تشغيل:

import matplotlib
matplotlib.matplotlib_fname()

يعرض هذا ملف matplotlibrc المشار إليه بواسطة حزمة matplotlib في بيئتك الافتراضية. اتبع المسار وافتح ملف matplotlibrc. قم بتحرير علامة الملف backend لقراءة backend: TkAgg و save

[ أيضًا - _نهج ثالث_]
لم تجرب من قبل ، ولكن وفقًا للوثائق ، يجب أن تكون قادرًا على تحديد الواجهة الخلفية عند استيراد matplotlib إذا كنت لا تريد تغيير الواجهة الخلفية في البرنامج النصي نفسه:

import matplotlib
matplotlib.use('TkAgg')

(انظر المصادر أدناه لمزيد من الشرح والأساليب الإضافية)

مصادر:
[1] http://matplotlib.org/faq/usage_faq.html#what -is-a-backend
[2] http://matplotlib.org/users/customizing.html#customizing -matplotlib
[3] http://stackoverflow.com/questions/4130355/python-matplotlib-framework-under-macosx
[4] http://stackoverflow.com/questions/29433824/unable-to-import-matplotlib-pyplot-as-plt-in-virtualenv

ال 34 كومينتر

ملاحظة ، من المحتمل أن تكون مكررة رقم 47 ، لكن المشكلة هناك أكثر تعقيدًا.


Original Comment By: dan mackinlay

+1 على هذا.

ما هو دليل ".Python" الذي يريد الارتباط به
http://github.com/gldnspud/virtualenv-pythonw-osx/ ؟ لا أرى أي .Python my venv.

بدلاً من ذلك ، أرى هذا:

 (py27) $ laf /Users/glind/venvs/py27//include/python2.7
 /Users/glind/venvs/py27//include/python2.7@ -> /usr/local/Cellar/python/2.7.2/include/python2.7
 (py27) $ which python
 /Users/glind/venvs/py27/bin/python

يتجلى هذا الخطأ بطرق مختلفة:

http://stackoverflow.com/questions/3692928/why-doesnt-the-save-button-work-on-a-matplotlib-plot
http://code.google.com/p/iterm2/issues/detail؟id=1680

السبب في عدم وجود .Python هو أنني في البداية كنت أتفوق من brew install python . فقط brew install python --framework .Python وتثبيتات Framework الأخرى تحصل على dynlib

إصلاح لهذا في الأفق؟ ما زلت أواجه مشكلة مع نوافذ Matplotlib الخجولة

يبلغ عمر هذه المشكلة 4،5 عامًا وتتطلب اختراقًا قبيحًا لتشغيل matplotlib على نظام التشغيل Mac OSX . هل يمكننا إصلاح هذا من فضلك؟

أنا أؤيد هذا. لقد قمت بتثبيت python 2.7 ثم قمت بإنشاء virtualenv باستخدام الأوامر التالية:

brew install python --framework
virtualenv env
source env/bin/activate
pip install matplotlib

لكنني أتلقى الرسالة التالية عندما أحاول استيراد matplotlib.pyplot .

Python 2.7.10 (default, Aug 22 2015, 20:33:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
>>> import matplotlib.pyplot as plt
...
    from matplotlib.backends import _macosx
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are Working with Matplotlib in a virtual enviroment see 'Working with Matplotlib in Virtual environments' in the Matplotlib FAQ

الحل البديل المذكور في أعمال @ nils-werner. لكنه مانع ضخم للمبتدئين الذين يرغبون في العمل مع matplotlib (ليس فقط) في دفتر jupyter في virtualenv.

لقد كتبت دليلاً مفصلاً حول كيفية التغلب على هذه المشكلة ، http://blog.rousek.name/2015/11/29/adventure-with-matplotlib-virtualenv-and-macosx/

Ugh ....... لقد قمت للتو بضرب هذا أيضًا ، بعد الترقية إلى matplotlib 1.5 (والذي فشل الآن في استيراد خلفية ، كما هو موثق أعلاه بواسطةstlk). أنا أستخدم برنامج python 3.5 مثبتًا على الشراب.

كنت أذهب إلى مقدمة عن التصور باستخدام فصل python ، ولا يمكنني حتى البدء في كتابة أول عينة رمز في Jupyter لأنني ما زلت أتعرض لهذه المشكلة على جهاز Mac ... أنا أستخدم نظام python الذي يأتي مع mac + virtualenv .

+1

+1
يا إلهي....
إصدار من عام 2011 .. لا يزال غير ثابت .

في الوقت الحالي ، لا تزال الأداة المرتبطة بهذه المشكلة (وفي الأسئلة الشائعة) تعمل بالنسبة لي:

$ # install the utility
$ pip install git+https://github.com/gldnspud/virtualenv-pythonw-osx.git
$ # enter the virtualenv with virtualenvwrapper (or manually)
$ workon my-venv
$ # double-check that this is your venv Python binary
$ which python
/Users/macbook/.virtualenvs/my-venv/bin/python
$ # fix it, using magic
$ fix-osx-virtualenv `which python`/../..

نعم ، الأمر بسيط للغاية ، لكنني استغرقت بعض الوقت لمعرفة ذلك. ليس لدي أي فكرة عما يفعله هذا ، ولكن نتيجة لذلك ، يعمل Matplotlib ببساطة عن طريق استدعائه باستخدام ثنائي venv Python الثنائي - لا حاجة لوظيفة غلاف الغلاف.

أعرف هذا الحل ولكن:

  • تحتاج إلى تكرارها (وتذكر كيفية القيام بذلك) لجميع أجهزة Virtualenvs الخاصة بك
  • يجعل من المستحيل بناء وحدات خارجية معينة أو عند استخدام CFFI أو شيء ما (ستحتاج إلى التحقق مما كان عليه بالضبط)

لا يبدو أنه حل مثالي ، ولكن الحل السهل هو استخدام Virtualenvwrapper ثم استخدام الخطافات لتكوين الأشياء. قم بتثبيت Virtualenv-pythonw-osx و virtualevnwrapper ، وقم بتثبيت ملف virtualenvwrapper.sh لإنشاء البرامج النصية للربط ، ثم أضف ما يلي إلى البرنامج النصي postactivate :

if [ ! -d $VIRTUAL_ENV/Python.app ]; then
  echo Fixing OSX Python display issues...
  fix-osx-virtualenv $VIRTUAL_ENV
fi

سيؤدي هذا تلقائيًا إلى إصلاح أي بيئة افتراضية عند تنشيطها عبر الأمر workon

+1

+1

+1

فقط اضغط على هذا الخطأ أيضًا. الحل المقترح ليس أنيقًا تمامًا. سيكون من الرائع أن تصلح!

حاول تغيير الواجهة الخلفية لـ matplotlib لجعل matplotlib يعمل في بيئة افتراضية:

يوجد (على الأقل) حلين استخدمتهما ، مع بعض الطرق الإضافية المدرجة أدناه. كلاهما مذكوران هنا يجب أن يكونا لنفس الشيء بنهج مختلف قليلاً:

إذا قمت بالفعل بتثبيت matplotlib باستخدام نقطة على بيئتك الافتراضية ، فيمكنك ...

_1. أضف ملف matplotlibrc جديد لبيئتك الافتراضية_
على سبيل المثال ، في بيئتك الافتراضية ، قم بتشغيل:

$ cd ~/.matplotlib
$ nano matplotlibrc #to create file using nano

اكتب backend: TkAgg في الملف واحفظه عند الخروج. يجب أن تكون على ما يرام.

_OR _

_2. قم بتحرير ملف matplotlibrc المشار إليه بواسطة البيئة الافتراضية الخاصة بك_
في بيئتك الافتراضية ، افتح قشرة بيثون وقم بتشغيل:

import matplotlib
matplotlib.matplotlib_fname()
'/home/foo/.config/matplotlib/matplotlibrc'

ملاحظة / تحديث: إذا ظهر لك خطأ في بناء الجملة في بيئتك الافتراضية ، فقد تحتاج ببساطة إلى تشغيل:

import matplotlib
matplotlib.matplotlib_fname()

يعرض هذا ملف matplotlibrc المشار إليه بواسطة حزمة matplotlib في بيئتك الافتراضية. اتبع المسار وافتح ملف matplotlibrc. قم بتحرير علامة الملف backend لقراءة backend: TkAgg و save

[ أيضًا - _نهج ثالث_]
لم تجرب من قبل ، ولكن وفقًا للوثائق ، يجب أن تكون قادرًا على تحديد الواجهة الخلفية عند استيراد matplotlib إذا كنت لا تريد تغيير الواجهة الخلفية في البرنامج النصي نفسه:

import matplotlib
matplotlib.use('TkAgg')

(انظر المصادر أدناه لمزيد من الشرح والأساليب الإضافية)

مصادر:
[1] http://matplotlib.org/faq/usage_faq.html#what -is-a-backend
[2] http://matplotlib.org/users/customizing.html#customizing -matplotlib
[3] http://stackoverflow.com/questions/4130355/python-matplotlib-framework-under-macosx
[4] http://stackoverflow.com/questions/29433824/unable-to-import-matplotlib-pyplot-as-plt-in-virtualenv

@ wwp3 كتابة رائعة ، شكرًا! لقد حالفني الحظ مع هذا الخيار:

import matplotlib
matplotlib.use('TkAgg')

العمل على تحسين مستندات Matplotlib لهذه المشكلة @ stlk أي اعتراضات على استخدام جزء من دليلك لإصلاح مشكلة دفتر Jupyter (لدينا بالفعل حزمة python / ipython مغطاة)

jenshnielsen لا تتردد في استخدامه ، أنا سعيد لأنه مفيد.

+1

هل هذا حل؟ إذا كان الأمر كذلك ، فهل يمكن لشخص ما إغلاق القضية؟

ليست كذلك

بالطبع لا. إنه أسوأ من أي وقت مضى لأنه يتعطل على import . خطوات التكاثر

virtualenv test
source test/bin/activate
pip install matplotlib
python -c "import matplotlib.pyplot; print 'import succeeded'"

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

@ nils-werner شكرًا على الوصف الواضح لكيفية التكاثر. إذا كان بإمكانك إضافة تفاصيل البيئة (كل ما أراه في السلسلة هو "OSX" ، ولكن لا يوجد شيء محدد حول ما إذا كانت جميع الإصدارات ، وما هو إصدار Virtualenv و python وكيف تم تثبيتهما ، وما إذا كان يلزم تثبيت أشياء أخرى معينة ، وكيفية تثبيتها ، وما إلى ذلك) سيكون ذلك مفيدًا أيضًا.

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

pfmoore لقد كنت أستخدم الحل البديل في تعليقي السابق ، والذي لا يزال يعمل باستمرار بالنسبة لي. - على الرغم من أنني لست متأكدًا من _كيف_ هذا يعمل. انظر أيضًا التعليق التالي بقلم @ nils-werner.

(للتسجيل: OS X 10.11.6 ، Python 3.5.2 ، matplotlib-1.5.3.)

@ nils-werner السبب الوحيد هو الأسوأ أننا نتحقق صراحة من بنية إطار العمل قبل تشغيل الواجهة الخلفية OSX في Matplotlib https://github.com/matplotlib/matplotlib/blob/master/src/_macosx.m#L3071

البديل هو فشل بسيط حيث تعمل واجهة المستخدم بشكل جزئي فقط.

يحتوي WXPython على بنية فحص مماثلة تمنعك من استخدام WXPython من بنية غير إطار عمل.

أفضل حل هو استخدام venv من المكتبة القياسية إذا كنت تستخدم python3
على عكس virtualenv التي تعمل بشكل صحيح.
http://matplotlib.org/devdocs/faq/osx_framework.html#introduction

حسنًا ، لذلك أعتقد أنه إذا لم يكن هناك أحد يعمل على PR ، فالقرار هنا إما:

  1. إذا كنت تستخدم Python 3 ، فاستخدم stdlib venv
  2. وإلا ، استخدم الحل البديل الذي تم تدوينه.

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

أي تحديثات على هذا؟ سيكون من الجيد إصلاح هذا بدلاً من الاضطرار إلى استخدام الحلول البديلة.

@ wwp3 عظيم ، شكرًا! لقد أصلحته بنجاح باستخدام هذا الخيار:

  1. أضف ملف matplotlibrc جديد لبيئتك الافتراضية
    على سبيل المثال ، في بيئتك الافتراضية ، قم بتشغيل:

$ cd ~ / .matplotlib
nano matplotlibrc # لإنشاء ملف باستخدام nano
اكتب الخلفية: TkAgg في الملف وحفظها عند الخروج. يجب أن تكون على ما يرام.

stlk كان ذلك مفيدًا ، شكرًا لك

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

حاول تغيير الواجهة الخلفية لـ matplotlib لجعل matplotlib يعمل في بيئة افتراضية:

يوجد (على الأقل) حلين استخدمتهما ، مع بعض الطرق الإضافية المدرجة أدناه. كلاهما مذكوران هنا يجب أن يكونا لنفس الشيء بنهج مختلف قليلاً:

إذا قمت بالفعل بتثبيت matplotlib باستخدام نقطة على بيئتك الافتراضية ، فيمكنك ...

_1. أضف ملف matplotlibrc جديد لبيئتك الافتراضية_
على سبيل المثال ، في بيئتك الافتراضية ، قم بتشغيل:

$ cd ~/.matplotlib
$ nano matplotlibrc #to create file using nano

اكتب backend: TkAgg في الملف واحفظه عند الخروج. يجب أن تكون على ما يرام.

_ _ أو __

_2. قم بتحرير ملف matplotlibrc المشار إليه بواسطة البيئة الافتراضية الخاصة بك_
في بيئتك الافتراضية ، افتح قشرة بيثون وقم بتشغيل:

import matplotlib
matplotlib.matplotlib_fname()
'/home/foo/.config/matplotlib/matplotlibrc'

ملاحظة / تحديث: إذا ظهر لك خطأ في بناء الجملة في بيئتك الافتراضية ، فقد تحتاج ببساطة إلى تشغيل:

import matplotlib
matplotlib.matplotlib_fname()

يعرض هذا ملف matplotlibrc المشار إليه بواسطة حزمة matplotlib في بيئتك الافتراضية. اتبع المسار وافتح ملف matplotlibrc. قم بتحرير علامة الملف backend لقراءة backend: TkAgg و save

[ أيضًا - _نهج ثالث_]
لم تجرب من قبل ، ولكن وفقًا للوثائق ، يجب أن تكون قادرًا على تحديد الواجهة الخلفية عند استيراد matplotlib إذا كنت لا تريد تغيير الواجهة الخلفية في البرنامج النصي نفسه:

import matplotlib
matplotlib.use('TkAgg')

(انظر المصادر أدناه لمزيد من الشرح والأساليب الإضافية)

مصادر:
[1] http://matplotlib.org/faq/usage_faq.html#what -is-a-backend
[2] http://matplotlib.org/users/customizing.html#customizing -matplotlib
[3] http://stackoverflow.com/questions/4130355/python-matplotlib-framework-under-macosx
[4] http://stackoverflow.com/questions/29433824/unable-to-import-matplotlib-pyplot-as-plt-in-virtualenv

حلك الأول رائع جدًا وقد حل مشكلتي. شكرا!

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

القضايا ذات الصلة

abn picture abn  ·  4تعليقات

neildhar picture neildhar  ·  4تعليقات

npinto picture npinto  ·  4تعليقات

schlamar picture schlamar  ·  4تعليقات

asottile picture asottile  ·  6تعليقات