Virtualenv: オプションで、osx上のフレームワークpythonビルドのvirtualenvにpythonwリンクを作成します

作成日 2011年03月14日  ·  34コメント  ·  ソース: pypa/virtualenv

http://groups.google.com/group/python-virtualenv/browse_thread/thread/83fa4a12d22a30c8/744e19c194f1618a?#744e19c194f1618aでは、現在win32とcygwinで機能している方法と同様に、virtualenvsでOSX上のpythonに対してwxpythonを有効にする方法について詳しく説明しています。インストールモード。

これらの線に沿ったイアンの以前の議論はここにあります:
http://groups.google.com/group/python-virtualenv/browse_thread/thread/b119a3c26aa49238
そして現時点でそれを行うコードはここにリストされています:
http://github.com/gldnspud/virtualenv-pythonw-osx/

これをコアディストリビューションに組み込むことはできますか? アプローチについて何を変更する必要がありますか?


  • Bitbucket: https
  • 当初の報告者:dan mackinlay
  • 当初の作成日:2010-09-22 09:09:54
enhancement

最も参考になるコメント

matplotlibバックエンドを変更して、matplotlibが仮想環境で機能するようにしてください。

私が使用したソリューションは(少なくとも)2つあり、いくつかの追加の方法が以下に含まれています。 ここで概説されている両方は、わずかに異なるアプローチで同じことをする必要があります。

仮想環境にpipを使用してmatplotlibを既にインストールしている場合は、次のことができます...

_1。 仮想環境用の新しいmatplotlibrcファイルを追加します_
たとえば、仮想環境で次のコマンドを実行します。

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

ファイルにbackend: TkAggを書き込み、終了時に保存します。 あなたは行ってもいいはずです。

_または_

_2。 仮想環境によって参照されるmatplotlibrcファイルを編集します_
仮想環境で、Pythonシェルを開いて、次のコマンドを実行します。

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

注/更新:仮想環境で構文エラーが発生した場合は、以下を実行する必要がある場合があります。

import matplotlib
matplotlib.matplotlib_fname()

これにより、仮想環境でmatplotlibパッケージによって参照されるmatplotlibrcファイルが表示されます。 パスに従って、matplotlibrcファイルを開きます。 ファイルのbackendタグを編集して、 backend: TkAggsaveを読み取ります

[また-_3番目のアプローチ_]
これまで試したことはありませんが、ドキュメントによると、スクリプト自体でバックエンドを変更したくない場合は、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私の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およびその他のFrameworkインストールのみが.Python dynlibを取得します。

これに対する修正は見えますか? 私はまだ恥ずかしがり屋のMatplotlibウィンドウに問題があります

この問題は4。5年前のものであり、MacOSXでmatplotlibを実行するには醜いハックが必要です。 これを修正してもらえますか?

私はこれを2番目にします。 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が言及した回避策は機能します。 しかし、virtualenvのjupyterノートブックでmatplotlib(だけでなく)を操作したい初心者のためのその巨大なブロッカー。

この問題を回避する方法の詳細なガイドを作成しました。http://blog.rousek.name/2015/11/29/adventure-with-matplotlib-virtualenv-and-macosx/

うーん....... matplotlib 1.5にアップグレードした後、これもヒットしました(@stlkが上記で説明したように、バックエンドのインポートに失敗します)。 brewがインストールされたpython3.5を使用しています。

Pythonの章を使用して視覚化の概要を説明していましたが、Macでこの問題が発生し続けているため、jupyterで最初のコードサンプルを書き始めることすらできません... Mac + virtualenvに付属のシステムpythonを使用しています。

+1

+1
なんてこった…。
2011年からの問題..まだ修正され

それまでの間、この号(およびFAQ)にリンクされているユーティリティは引き続き機能しました。

$ # 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は、そのvenvPythonバイナリを使用して呼び出すだけで機能します。ラッパーシェル関数は必要ありません。

私はこの解決策を知っていますが:

  • すべてのvirtualenvに対してそれを繰り返す(そしてその方法を覚えておく)必要があります
  • 特定の外部モジュールを構築したり、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が仮想環境で機能するようにしてください。

私が使用したソリューションは(少なくとも)2つあり、いくつかの追加の方法が以下に含まれています。 ここで概説されている両方は、わずかに異なるアプローチで同じことをする必要があります。

仮想環境にpipを使用してmatplotlibを既にインストールしている場合は、次のことができます...

_1。 仮想環境用の新しいmatplotlibrcファイルを追加します_
たとえば、仮想環境で次のコマンドを実行します。

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

ファイルにbackend: TkAggを書き込み、終了時に保存します。 あなたは行ってもいいはずです。

_または_

_2。 仮想環境によって参照されるmatplotlibrcファイルを編集します_
仮想環境で、Pythonシェルを開いて、次のコマンドを実行します。

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

注/更新:仮想環境で構文エラーが発生した場合は、以下を実行する必要がある場合があります。

import matplotlib
matplotlib.matplotlib_fname()

これにより、仮想環境でmatplotlibパッケージによって参照されるmatplotlibrcファイルが表示されます。 パスに従って、matplotlibrcファイルを開きます。 ファイルのbackendタグを編集して、 backend: TkAggsaveを読み取ります

[また-_3番目のアプローチ_]
これまで試したことはありませんが、ドキュメントによると、スクリプト自体でバックエンドを変更したくない場合は、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')

(我々はすでにカバーipythonターミナルのpythonを/持っている)Jupyterノートブックの問題への修正のためのあなたのガイドの一部を使用することに異議@stlkこの問題のためにmatplotlibのドキュメントの改善に取り組んで

@jenshnielsenお気軽にご利用

+1

これは解決されましたか? もしそうなら、誰かが問題を閉じることができますか?

そうではありません

絶対違う。 importでクラッシュするため、これまでになく悪化しています。 再現する手順

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

これを修正するPRはありますか? もしそうなら、問題に遭遇した人々はそれをテストし、それが問題を解決することを確認しましたか? ない場合は、誰かが取り組んでいますか? 問題を再現できない人(少なくともOSXのインストールが必要)が修正を開発することは多かれ少なかれ不可能になるので、ここでの貢献に依存しています。

@ nils-werner再現方法の明確な説明に感謝します。 環境の詳細を追加できる場合(スレッドに表示されるのは「OSX」だけですが、それがすべてのバージョンであるかどうか、virtualenvとpythonのバージョンとインストール方法、他の特定のものをインストールする必要があるかどうか、方法については特に何もありません。それらをインストールするなど)同様に役立ちます。

次に、適切な環境にアクセスできる人がPRを作成し、ここで参照できることを願っています。 その段階で、PRを確認し、そこから取得できます。

@pfmoore以前のコメントてき

(記録のために:OS X 10.11.6、Python 3.5.2、matplotlib-1.5.3。)

@ nils-werner MatplotlibでOSXバックエンドを実行する前にフレームワークビルドを明示的にチェックすることがさらに悪い唯一の理由https://github.com/matplotlib/matplotlib/blob/master/src/_macosx.m#L3071

別の方法は、GUIが部分的にしか機能しないソフト障害です。

WXPythonにも同様のチェックビルドがあり、フレームワーク以外のビルドからWXPythonを使用できなくなります。

最良の回避策は、python3を使用している場合、標準ライブラリのvenvを使用することです。
正しく機能するvirtualenvとは異なります。
http://matplotlib.org/devdocs/faq/osx_framework.html#introduction

さて、PRに取り組んでいる人がいない場合、ここでの解決策は次のいずれかです。

  1. Python 3を使用している場合は、stdlib venv
  2. それ以外の場合は、記載されている回避策を使用してください。

いいね。 その場合、問題を開いたままにしておく価値があるかどうかはわかりません。明確な回避策があり、コードの修正はとにかく新しいPRになります。 問題を解決することをお勧めします-コメント?

これに関する更新はありますか? 回避策を使用する代わりに、これを修正しておくと便利です。

@ wwp3素晴らしい、ありがとう! 私はこのオプションでそれをうまく修正しました:

  1. 仮想環境用の新しいmatplotlibrcファイルを追加します
    たとえば、仮想環境で次のコマンドを実行します。

$ cd〜 / .matplotlib
$ nano matplotlibrc#nanoを使用してファイルを作成する
バックエンド:TkAggをファイルに書き込み、終了時に保存します。 あなたは行ってもいいはずです。

役に立った@stlkありがとう

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 開いたままにしておきたい場合は、コメントを追加してください。 貢献していただきありがとうございます。

matplotlibバックエンドを変更して、matplotlibが仮想環境で機能するようにしてください。

私が使用したソリューションは(少なくとも)2つあり、いくつかの追加の方法が以下に含まれています。 ここで概説されている両方は、わずかに異なるアプローチで同じことをする必要があります。

仮想環境にpipを使用してmatplotlibを既にインストールしている場合は、次のことができます...

_1。 仮想環境用の新しいmatplotlibrcファイルを追加します_
たとえば、仮想環境で次のコマンドを実行します。

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

ファイルにbackend: TkAggを書き込み、終了時に保存します。 あなたは行ってもいいはずです。

__または__

_2。 仮想環境によって参照されるmatplotlibrcファイルを編集します_
仮想環境で、Pythonシェルを開いて、次のコマンドを実行します。

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

注/更新:仮想環境で構文エラーが発生した場合は、以下を実行する必要がある場合があります。

import matplotlib
matplotlib.matplotlib_fname()

これにより、仮想環境でmatplotlibパッケージによって参照されるmatplotlibrcファイルが表示されます。 パスに従って、matplotlibrcファイルを開きます。 ファイルのbackendタグを編集して、 backend: TkAggsaveを読み取ります

[また-_3番目のアプローチ_]
これまで試したことはありませんが、ドキュメントによると、スクリプト自体でバックエンドを変更したくない場合は、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

あなたの最初の解決策はとても素晴らしく、私の問題を解決しました。 THX!

このページは役に立ちましたか?
0 / 5 - 0 評価