Virtualenv: secara opsional buat tautan pythonw di virtualenv untuk kerangka kerja python dibangun di osx

Dibuat pada 14 Mar 2011  ·  34Komentar  ·  Sumber: pypa/virtualenv

http://groups.google.com/group/python-virtualenv/browse_thread/thread/83fa4a12d22a30c8/744e19c194f1618a?#744e19c194f1618a merinci bagaimana wxpython dapat diaktifkan untuk python di OSX di virtualenvs dengan analogi dengan cara kerjanya saat ini untuk win32 mode instalasi.

Diskusi Ian sebelumnya di sepanjang baris ini ada di sini:
http://groups.google.com/group/python-virtualenv/browse_thread/thread/b119a3c26aa49238
dan kode yang melakukannya saat ini tercantum di sini:
http://github.com/gldnspud/virtualenv-pythonw-osx/

Bisakah kita memasukkan ini ke dalam distribusi inti? Apa yang perlu diubah tentang pendekatannya?


enhancement

Komentar yang paling membantu

Coba ubah backend matplotlib agar matplotlib berfungsi di lingkungan virtual:

Ada (setidaknya) dua solusi yang saya gunakan, dengan beberapa metode tambahan yang disertakan di bawah ini. Keduanya diuraikan di sini harus untuk hal yang sama dengan pendekatan yang sedikit berbeda:

Jika Anda sudah menginstal matplotlib menggunakan pip di lingkungan virtual Anda, Anda dapat...

_1. Tambahkan file matplotlibrc baru untuk lingkungan virtual Anda_
Misalnya, di lingkungan virtual Anda jalankan:

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

Tulis backend: TkAgg dalam file dan simpan saat keluar. Anda harus baik untuk pergi.

_ATAU _

_2. Edit file matplotlibrc yang dirujuk oleh lingkungan virtual Anda_
Di lingkungan virtual Anda, buka shell python dan jalankan:

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

Catatan/Perbarui: jika Anda mendapatkan kesalahan sintaks di lingkungan virtual Anda, Anda mungkin hanya perlu menjalankan:

import matplotlib
matplotlib.matplotlib_fname()

Ini menampilkan file matplotlibrc yang dirujuk oleh paket matplotlib di lingkungan virtual Anda. Ikuti jalurnya dan buka file matplotlibrc. Edit tag backend file untuk membaca backend: TkAgg dan save

[ Juga - _Pendekatan ketiga_]
Belum pernah mencoba sebelumnya, tetapi menurut dokumentasi Anda harus dapat menentukan backend saat mengimpor matplotlib jika Anda tidak ingin mengubah backend dalam skrip itu sendiri:

import matplotlib
matplotlib.use('TkAgg')

(lihat sumber di bawah untuk penjelasan lebih lanjut dan metode tambahan)

Sumber:
[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

Semua 34 komentar

perhatikan, mungkin duplikat #47 , tetapi masalahnya sedikit lebih rumit.


Original Comment By: dan mackinlay

+1 pada ini.

Apa direktori ".Python" yang ingin ditautkan?
http://github.com/gldnspud/virtualenv-pythonw-osx/ ? Saya tidak melihat .Python venv saya.

Sebagai gantinya, saya melihat ini:

 (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

Bug ini bermanifestasi dalam berbagai cara:

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

Alasan tidak ada .Python adalah karena pada awalnya saya melakukan venving dari brew install python . Hanya brew install python --framework dan pemasangan Framework lainnya yang mendapatkan .Python dynlib.

Perbaikan untuk ini di depan mata? Saya masih memiliki masalah dengan jendela Matplotlib yang pemalu

Masalah ini berusia 4,5 tahun dan membutuhkan peretasan yang buruk untuk membuat matplotlib berjalan di Mac OSX . Bisakah kami memperbaiki ini?

Saya kedua ini. Saya menginstal python 2.7 dan kemudian membuat virtualenv menggunakan perintah berikut:

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

Tetapi saya mendapatkan pesan berikut ketika saya mencoba mengimpor 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

Solusi yang disebutkan oleh @nils-werner berfungsi. Tetapi pemblokir besar untuk pemula yang ingin bekerja dengan matplotlib (tidak hanya) di notebook jupyter di virtualenv.

Saya menulis panduan terperinci bagaimana mengatasi masalah ini, http://blog.rousek.name/2015/11/29/adventure-with-matplotlib-virtualenv-and-macosx/

Ugh ....... Saya baru saja menekan ini juga, mengikuti peningkatan ke matplotlib 1.5 (yang sekarang gagal mengimpor backend, seperti yang didokumentasikan di atas oleh @stlk). Saya menggunakan buatan python 3.5.

Sedang melalui pengantar visualisasi menggunakan bab python, dan saya bahkan tidak bisa mulai menulis contoh kode pertama di jupyter karena saya terus menemukan masalah ini di mac ... Saya menggunakan sistem python yang datang dengan mac + virtualenv .

+1

+1
Ya Tuhan....
masalah dari 2011.. masih belum diperbaiki .

Sementara itu, utilitas yang ditautkan dalam masalah ini (dan di FAQ) masih berfungsi untuk saya:

$ # 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`/../..

Ya, itu cukup sederhana, tetapi butuh beberapa saat untuk mencari tahu. Saya tidak tahu apa fungsinya, tetapi sebagai hasilnya Matplotlib bekerja hanya dengan menjalankannya menggunakan biner venv Python - tidak perlu fungsi shell pembungkus.

Saya tahu solusi ini tetapi:

  • Anda perlu mengulangi (dan ingat bagaimana melakukannya) untuk semua virtualenvs Anda
  • Itu membuat tidak mungkin untuk membangun modul eksternal tertentu atau ketika menggunakan CFFI atau sesuatu (perlu memeriksa apa itu sebenarnya)

Itu tidak terasa seperti solusi yang ideal, tetapi solusi yang mudah adalah menggunakan virtualenvwrapper dan kemudian menggunakan kait untuk mengonfigurasi berbagai hal. Instal virtualenv-pythonw-osx dan virtualevnwrapper, sumber file virtualenvwrapper.sh untuk membuat skrip kait, lalu tambahkan yang berikut ke skrip postactivate :

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

Ini akan secara otomatis memperbaiki lingkungan virtual apa pun saat Anda mengaktifkannya melalui perintah workon

+1

+1

+1

Tekan saja bug ini juga. Solusi yang disarankan tidak sepenuhnya elegan. Akan sangat bagus untuk diperbaiki!

Coba ubah backend matplotlib agar matplotlib berfungsi di lingkungan virtual:

Ada (setidaknya) dua solusi yang saya gunakan, dengan beberapa metode tambahan yang disertakan di bawah ini. Keduanya diuraikan di sini harus untuk hal yang sama dengan pendekatan yang sedikit berbeda:

Jika Anda sudah menginstal matplotlib menggunakan pip di lingkungan virtual Anda, Anda dapat...

_1. Tambahkan file matplotlibrc baru untuk lingkungan virtual Anda_
Misalnya, di lingkungan virtual Anda jalankan:

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

Tulis backend: TkAgg dalam file dan simpan saat keluar. Anda harus baik untuk pergi.

_ATAU _

_2. Edit file matplotlibrc yang dirujuk oleh lingkungan virtual Anda_
Di lingkungan virtual Anda, buka shell python dan jalankan:

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

Catatan/Perbarui: jika Anda mendapatkan kesalahan sintaks di lingkungan virtual Anda, Anda mungkin hanya perlu menjalankan:

import matplotlib
matplotlib.matplotlib_fname()

Ini menampilkan file matplotlibrc yang dirujuk oleh paket matplotlib di lingkungan virtual Anda. Ikuti jalurnya dan buka file matplotlibrc. Edit tag backend file untuk membaca backend: TkAgg dan save

[ Juga - _Pendekatan ketiga_]
Belum pernah mencoba sebelumnya, tetapi menurut dokumentasi Anda harus dapat menentukan backend saat mengimpor matplotlib jika Anda tidak ingin mengubah backend dalam skrip itu sendiri:

import matplotlib
matplotlib.use('TkAgg')

(lihat sumber di bawah untuk penjelasan lebih lanjut dan metode tambahan)

Sumber:
[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 Tulisan yang bagus , terima kasih! Saya beruntung dengan opsi ini:

import matplotlib
matplotlib.use('TkAgg')

Bekerja untuk meningkatkan dokumen Matplotlib untuk masalah ini @stlk ada keberatan untuk menggunakan bagian dari panduan Anda untuk memperbaiki masalah notebook Jupyter (Kami sudah memiliki terminal python/ipython yang tercakup)

@jenshnielsen Jangan ragu untuk menggunakannya, saya senang ini membantu.

+1

Apakah ini terpecahkan? Jika demikian, dapatkah seseorang menutup masalah ini?

Ini bukan

Sama sekali tidak. Ini lebih buruk dari sebelumnya karena crash pada import . Langkah-langkah untuk mereproduksi

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

Apakah ada PR yang memperbaikinya? Jika demikian, apakah orang yang mengalami masalah telah mengujinya dan mengonfirmasi bahwa itu menyelesaikan masalah? Jika tidak ada, apakah ada yang mengerjakannya? Ini akan menjadi lebih atau kurang mungkin bagi siapa saja yang tidak dapat mereproduksi masalah (yang membutuhkan, saya kira, instalasi OSX minimal untuk dilakukan) untuk mengembangkan perbaikan, jadi kami mengandalkan kontribusi di sini.

@nils-werner terima kasih atas deskripsi yang jelas tentang cara mereproduksi. Jika Anda dapat menambahkan detail lingkungan (yang saya lihat di utas adalah "OSX", tetapi tidak ada yang spesifik tentang apakah itu semua versi, versi virtualenv dan python apa dan bagaimana mereka diinstal, apakah hal-hal tertentu lainnya perlu diinstal, bagaimana cara menginstalnya, dll) yang akan sangat membantu juga.

Maka mudah-mudahan seseorang dengan akses ke lingkungan yang sesuai dapat menghasilkan PR dan referensi di sini. Pada tahap itu, kami dapat meninjau PR dan mengambilnya dari sana.

@pfmoore Saya telah menggunakan solusi di komentar saya sebelumnya , yang masih bekerja secara konsisten untuk saya. – Meskipun saya tidak yakin _how_ itu berhasil. Lihat juga komentar berikut oleh @nils-werner.

(Sebagai catatan: OS X 10.11.6, Python 3.5.2, matplotlib-1.5.3.)

@ nils-werner Satu-satunya alasan yang lebih buruk adalah kami secara eksplisit memeriksa kerangka kerja sebelum menjalankan backend OSX di Matplotlib https://github.com/matplotlib/matplotlib/blob/master/src/_macosx.m#L3071

Alternatifnya adalah kegagalan lunak di mana gui hanya berfungsi sebagian.

WXPython memiliki build pemeriksaan serupa yang mencegah Anda menggunakan WXPython dari build non framework.

Solusi terbaik adalah menggunakan venv dari pustaka standar jika Anda menggunakan python3
Tidak seperti virtualenv yang bekerja dengan benar.
http://matplotlib.org/devdocs/faq/osx_framework.html#introduction

Oke, jadi saya kira jika tidak ada yang mengerjakan PR, resolusinya di sini adalah:

  1. Jika Anda menggunakan Python 3, gunakan stdlib venv
  2. Jika tidak, gunakan solusi yang dicatat.

Dingin. Saya tidak yakin apakah layak membiarkan masalah terbuka dalam kasus itu - ada solusi yang jelas, dan perbaikan kode apa pun akan menjadi PR baru. Saya sarankan kita menutup masalah - komentar?

Ada pembaruan tentang ini? Akan lebih baik untuk memperbaiki ini daripada harus menggunakan solusi.

@wwp3 Bagus, terima kasih! Saya berhasil memperbaikinya dengan opsi ini:

  1. Tambahkan file matplotlibrc baru untuk lingkungan virtual Anda
    Misalnya, di lingkungan virtual Anda jalankan:

$cd ~/.matplotlib
$ nano matplotlibrc #untuk membuat file menggunakan nano
Tulis backend: TkAgg dalam file dan simpan saat keluar. Anda harus baik untuk pergi.

@stlk itu membantu terima kasih

Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Cukup tambahkan komentar jika Anda ingin tetap membukanya. Terima kasih atas kontribusi Anda.

Coba ubah backend matplotlib agar matplotlib berfungsi di lingkungan virtual:

Ada (setidaknya) dua solusi yang saya gunakan, dengan beberapa metode tambahan yang disertakan di bawah ini. Keduanya diuraikan di sini harus untuk hal yang sama dengan pendekatan yang sedikit berbeda:

Jika Anda sudah menginstal matplotlib menggunakan pip di lingkungan virtual Anda, Anda dapat...

_1. Tambahkan file matplotlibrc baru untuk lingkungan virtual Anda_
Misalnya, di lingkungan virtual Anda jalankan:

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

Tulis backend: TkAgg dalam file dan simpan saat keluar. Anda harus baik untuk pergi.

_ _ATAU __

_2. Edit file matplotlibrc yang dirujuk oleh lingkungan virtual Anda_
Di lingkungan virtual Anda, buka shell python dan jalankan:

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

Catatan/Perbarui: jika Anda mendapatkan kesalahan sintaks di lingkungan virtual Anda, Anda mungkin hanya perlu menjalankan:

import matplotlib
matplotlib.matplotlib_fname()

Ini menampilkan file matplotlibrc yang dirujuk oleh paket matplotlib di lingkungan virtual Anda. Ikuti jalurnya dan buka file matplotlibrc. Edit tag backend file untuk membaca backend: TkAgg dan save

[ Juga - _Pendekatan ketiga_]
Belum pernah mencoba sebelumnya, tetapi menurut dokumentasi Anda harus dapat menentukan backend saat mengimpor matplotlib jika Anda tidak ingin mengubah backend dalam skrip itu sendiri:

import matplotlib
matplotlib.use('TkAgg')

(lihat sumber di bawah untuk penjelasan lebih lanjut dan metode tambahan)

Sumber:
[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

Solusi pertama Anda sangat bagus dan telah memecahkan masalah saya. Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat