Eine Geschichte über das Erstellen einer Umgebung durch Einfügen von pyenv, pyenv-virtualenv und jupyter in Mac OS X El Capitan.
Install pyenv, pyenv-virtualenv
$ brew install pyenv pyenv-virtualenv
Install python and create virtual environment
$ PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs2 --enable-framework=$(pyenv root)/versions/2.7.11" pyenv install 2.7.11
$ pyenv virtualenv 2.7.11 tech
Wenn Sie PYTHON_CONFIGURE_OPTS =" --enable-unicode = ucs2 "
nicht hinzufügen, wird später in jupyter notebook
↓ eine Fehlermeldung angezeigt
Referenz: http://qiita.com/sigmalogneko/items/b5c15f5229387bbfd53a
(test) foo-mbp:test foo$ jupyter notebook
Traceback (most recent call last):
File "/Users/foo/.pyenv/versions/test/bin/jupyter-notebook", line 7, in <module>
from notebook.notebookapp import main
File "/Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/notebook/notebookapp.py", line 30, in <module>
from zmq.eventloop import ioloop
File "/Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/__init__.py", line 66, in <module>
from zmq import backend
File "/Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/backend/__init__.py", line 40, in <module>
reraise(*exc_info)
File "/Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/backend/__init__.py", line 27, in <module>
_ns = select_backend(first)
File "/Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/backend/select.py", line 27, in select_backend
mod = __import__(name, fromlist=public_api)
File "/Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/backend/cython/__init__.py", line 6, in <module>
from . import (constants, error, message, context,
ImportError: dlopen(/Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/backend/cython/constants.so, 2): Symbol not found: _PyUnicodeUCS2_DecodeUTF8
Referenced from: /Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/backend/cython/constants.so
Expected in: flat namespace
in /Users/foo/.pyenv/versions/2.7.10/envs/test/lib/python2.7/site-packages/zmq/backend/cython/constants.so
Wenn das passiert,
$ pyenv uninstall 2.7.10
$ PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs2" pyenv install 2.7.10
Wiederholen
Außerdem ist PYTHON_CONFIGURE_OPTS =" - enable-framework = $ (pyenv root) /versions/2.7.11 "
eine Option, um Python im Framework-Modus (?) Auszuführen. Wenn Sie dies nicht tun, funktioniert matplotlib
nicht. Ändern Sie die Versionsnummer entsprechend.
Es funktioniert sowieso nicht, wenn Sie eine virtuelle Umgebung verwenden (siehe unten).
Use virtual environment
pyenv activate tech
Install jupyter
pip install jupyter
Matplotlib Auf dem iPython Notebook
import matplotlib.pyplot
Dann tritt ein Fehler auf.
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-1-c845eb879342> in <module>()
19
20 sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath('__file__')))))
---> 21 import handcraft_feature_extractor
22 #import text2vec
23 import config
/Users/foo/codes/pksha/chatbot-base/handcraft_feature_extractor.py in <module>()
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
----> 3 from feature_extractor import FeatureExtractor
4 import MeCab
5 import config
/Users/foo/codes/pksha/chatbot-base/feature_extractor.py in <module>()
3 import matplotlib
4 import numpy as np
----> 5 import matplotlib.pyplot as plt
6 import MeCab
7 import re, pprint
/Users/foo/.pyenv/versions/2.7.9/envs/pksha/lib/python2.7/site-packages/matplotlib/pyplot.py in <module>()
112
113 from matplotlib.backends import pylab_setup
--> 114 _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
115
116 _IP_REGISTERED = None
/Users/foo/.pyenv/versions/2.7.9/envs/pksha/lib/python2.7/site-packages/matplotlib/backends/__init__.pyc in pylab_setup()
30 # imports. 0 means only perform absolute imports.
31 backend_mod = __import__(backend_name,
---> 32 globals(),locals(),[backend_name],0)
33
34 # Things we pull in from all backends
/Users/foo/.pyenv/versions/2.7.9/envs/pksha/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.py in <module>()
22
23 import matplotlib
---> 24 from matplotlib.backends import _macosx
25
26
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
http://matplotlib.org/faq/virtualenv_faq.html Mit Bezug auf
Erstellen Sie "PATHTOENV / bin / frameworkpython" und erteilen Sie die Ausführungsberechtigung
~/.pyenv/versions/tech/bin/frameworkpython
#!/bin/bash
# what real Python executable to use
PYVER=2.7
PATHTOPYTHON=/usr/bin/
PYTHON=${PATHTOPYTHON}python${PYVER}
# find the root of the virtualenv, it should be the parent of the dir this script is in
ENV=`$PYTHON -c "import os; print os.path.abspath(os.path.join(os.path.dirname(\"$0\"), '..'))"`
# now run Python with the virtualenv set as Python's HOME
export PYTHONHOME=$ENV
exec $PYTHON "$@"
$ chmod +x ~/.pyenv/versions/tech/bin/frameworkpython
In diesem Staat
$ frameworkpython -m IPython notebook
Wenn Sie IPython Notebook mit starten, wird "import matplotlib.pyplot" ausgeführt. Haben Sie die Python, die Sie verwenden, durch die des Systems in "FrameworkPython" ersetzt? Wenn Sie also nicht auf dieses Beispiel beschränkt sind und auf ein Problem stoßen, das aufgrund der Verwendung von Python von "virtualenv" als Fehler erscheint, sollten Sie versuchen, es stattdessen mit "Framework Python" auszuführen.
Jedoch,
$ frameworkpython -m jupyter notebook
Das geht nicht Ich fühle mich unwohl und möchte etwas dagegen tun.
http://www.wirywolf.com/2016/01/pyplot-in-jupyter-inside-pyenv-on-el-capitan.html Mit Bezug auf
$ jupyter --paths
config:
/Users/foo/.jupyter
/Users/foo/.pyenv/versions/2.7.9/envs/pksha/etc/jupyter
/usr/local/etc/jupyter
/etc/jupyter
data:
/Users/foo/Library/Jupyter
/Users/foo/.pyenv/versions/2.7.9/envs/pksha/share/jupyter
/usr/local/share/jupyter
/usr/share/jupyter
runtime:
/Users/foo/Library/Jupyter/runtime
Definieren Sie einen neuen Kernel unter dem ersten von data:
, / Users / foo / Library / Jupyter
.
$ mkdir -p ~/Library/Jupyter/kernels/matplotlib
$ vi ~/Library/Jupyter/kernels/matplotlib/kernel.json
~/Library/Jupyter/kernels/matplotlib/kernel.json
{
"argv": [ "/Users/foo/.pyenv/versions/tech/bin/frameworkpython", "-m", "ipykernel",
"-f", "{connection_file}"],
"display_name": "matplotlib",
"language": "python"
}
Der Kernel ist jetzt mit dem Namen "matplotlib" definiert.
Führen Sie "jupyter notebook" normal aus und Wenn Sie am Jupyter-Notizbuch arbeiten, setzen Sie den Kernel auf "matplotlib".
Recommended Posts