Каков самый простой способ заставить matplotlib в OSX работать в виртуальной среде?

Я только что обнаружил, что matplotlib имеет проблемы с виртуальными средами. Я пробовал решения в FAQ, но они не работали. Идеальное решение должно включать только команды pip , но было бы сложно или нереалистично просить об этом. Во всяком случае, я попробовал то, что у них было в разделе OS X, чтобы создать файл bash framework в папке venv и запустить через него команду.

 $ frameworkpython krls.py 

когда я сделал это, я получил ошибку разрешения deniel:

  • Как изменить приглашение по умолчанию virtualenv?
  • subprocess.call () игнорируются при использовании shell = True w / list
  • Создание нескольких CSV-файлов из данных в файле csv
  • Как argpse (и устаревший optparse) реагируют на нажатие клавиши «tab» после имени программы python, в bash?
  • Python subprocess.call - псевдоним bash
  • Почему мне нужно дважды нажать Ctrl + D, чтобы закрыть stdin?
  •  Permission denied 

    Я как бы испугался команд sudoing, что я не на 100%, что они делают … В любом случае, сценарий bash не делает ничего слишком опасного, поэтому я пошел дальше и судировал его. Однако ответ моего терминала был странным, он сказал:

     sudo frameworkpython krsl.py sudo: frameworkpython: command not found 

    что означает, что он не распознает frameworkpython как команду. Без sudo он говорит:

    frameworkpython krsl.py -bash: / Пользователи / my_name / path / venv / bin / frameworkpython: Разрешение отклонено

    который, по-видимому, распознает frameworkpython как команду (?), но не выполнил ее из-за разрешений? Мне это кажется странным. Какие-нибудь идеи?


    Я также пробовал:

     $ pip install TKAgg Collecting TKAgg Could not find a version that satisfies the requirement TKAgg (from versions: ) No matching distribution found for TKAgg 

    но это не сработало.

    Поэтому я попробовал следующий вариант, который использует PySide, который также не работал, и дал гигантский результат ошибки:

     $ pip install pyside Collecting pyside Using cached PySide-1.2.4.tar.gz Building wheels for collected packages: pyside Running setup.py bdist_wheel for pyside ... error Complete output from command /Users/my_name/path/venv/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-build-_yzDki/pyside/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/tmpUR9qFCpip-wheel- --python-tag cp27: Removing /private/var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-build-_yzDki/pyside/pyside_package running bdist_wheel running build Python architecture is 64bit error: Failed to find cmake. Please specify the path to cmake with --cmake parameter. ---------------------------------------- Failed building wheel for pyside Running setup.py clean for pyside Failed to build pyside Installing collected packages: pyside Running setup.py install for pyside ... error Complete output from command /Users/my_name/path/venv/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-build-_yzDki/pyside/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-UVA_F4-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/my_name/path/venv/bin/../include/site/python2.7/pyside: Removing /private/var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-build-_yzDki/pyside/pyside_package running install running build Python architecture is 64bit error: Failed to find cmake. Please specify the path to cmake with --cmake parameter. ---------------------------------------- Command "/Users/my_name/path/venv/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-build-_yzDki/pyside/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-UVA_F4-record/install-record.txt --single-version-externally-managed --compile --install-headers /Users/my_name/path/venv/bin/../include/site/python2.7/pyside" failed with error code 1 in /private/var/folders/nr/rxlk6w192hx8r74813yg6r500000gn/T/pip-build-_yzDki/pyside/ 

    После этого я попробовал следующий вариант с помощью WX Phonix . К сожалению, я прошел через их сайт и не смог найти, как это сделать.

  • установление расстояния между сгруппированными штриховыми графиками в matplotlib
  • Как преобразовать 1D-список python, содержащий данные изображения, в массив numpy и отобразить его
  • Matplotlib не отображается в Mac OSX
  • Создайте цифру, подсчитанную по ссылке
  • Matplotlib: как построить категориальные данные по оси y?
  • Как сделать диаграмму matplotlib / pandas гистограммой?
  • 6 Solutions collect form web for “Каков самый простой способ заставить matplotlib в OSX работать в виртуальной среде?”

    Обновить:

    С Python3 вы можете использовать встроенную реализацию virtualenv через -m venv :

     python -m venv <name of virtualenv> source <name of virtualenv>/bin/activate 

    Встроенная реализация Python3 создает виртуальный диск, так что Python настроен как структура, поэтому нет необходимости настраивать что-либо, чтобы заставить его работать. Подробнее здесь .


    Оригинальный ответ:

    Как указано в FAQs, который вы ссылаетесь , вам нужно будет создать сценарии frameworkpython в venv/bin . Похоже, ваша система не может найти frameworkpython так что она либо не на ваших системах $PATH либо не является исполняемой.

    Убедитесь, что исполняемые скрипты chmod +x venv/bin/frameworkpython через chmod +x venv/bin/frameworkpython !

    Из документов Linux / Unix (я добавил полужирный):

    PATH – это переменная среды в Linux и других Unix-подобных операционных системах, которая сообщает оболочке, какие каталоги ищут исполняемые файлы.

    Ваша система будет искать только исполняемые файлы, доступные через PATH среды PATH , пропуская неиспользуемые файлы.


    Создание сценария frameworkpython необходимо, потому что matplotlib требует создания фреймворка python. По ссылке выше:

    К сожалению, virtualenv создает сборку без фреймворка, даже если она создана из фреймворческой сборки Python.

    Вот еще одно сообщение с более подробной информацией о создании фреймворков

    Как и ваша настройка, я использую matplotlib из виртуальной среды на OSX.

    Я вижу, что вы потратили немало усилий, чтобы добиться успеха, и я не уверен, действительно ли это решит вашу проблему, так как никакие две настройки не совпадают. Однако я отказываюсь от своей конфигурации, чтобы вы могли сравнить и, возможно, найти что-то, что поможет вам решить эту проблему.

    Отказ от ответственности : я использую virtualenvwrapper и храню свои venvs под ~/.virtualenvs/ .

    1. Скопируйте файл frameworkpython файл ~/.virtualenvs/YOUR_VENV/bin

    2. Обязательно измените переменную PATHTOPYTHON в сценарии frameworkpython bash, чтобы ссылаться на правильное местоположение. Для моей настройки я изменил ее на /usr/bin/ (в то время как исходная настройка была /usr/local/bin )

    3. Установить исполняемый флаг chmod +x frameworkpython

    4. Установите libs с помощью pip как обычно после перехода на виртуальную среду с помощью virtualenvwrapper: workon YOUR_VENV

    matplotlib виде обычного пользователя (без root, pls!) И импорта результатов matplotlib :

     $ ./frameworkpython Python 2.7.0 (default, Oct 23 2015, 19:19:21) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import matplotlib as mpl >>> mpl.__version__ '1.5.1' >>> import matplotlib.pyplot as plt >>> ^D 

    Расширяя предложения @ Gator_Python и @ juanpa.arrivillaga, я рекомендую установить последнюю версию anaconda . Это кросс-платформенный диспетчер пакетов, который также обрабатывает виртуальные среды. Он также устанавливает большие пакеты, такие как numpy , pandas и matplotlib с небольшой головной болью.

    Настройка : из командной строки просто создайте виртуальную среду и установите ее там. Ниже приведен пример настройки conda (замените соответствующее имя среды и номер версии python соответственно):

     conda update conda conda update anaconda conda create -n <envname> python=<version> matplotlib source activate <envname> conda info --envs # show current env conda list # see installed env packages 

    Это должно помещать вас в изолированную, чистую окружающую среду. Вы можете увидеть минимальный список пакетов, установленных в этой среде. Удостоверьтесь, что указаны пункты pip и setuptools (они установлены автоматически). Для любых других пакетов, которые вам нужны, используйте либо conda install <package> либо pip install <package> , в этом порядке. Установите свой проект:

     cd <path\to\project> python setup.py develop 

    Удаление . Когда вы будете готовы удалить свою среду:

     source deactivate conda env remove -n <envname> 

    Примечание . Альтернативы setup.py develop :

    • conda develop
    • pip install -e /path/to/mypackage

    Чтобы получить работу pyside:

     brew install cmake 

    пиво – довольно стандартная зависимость OSX.

    Вы правы в определении того, что это проблема с каркасом. Различия между Framework и не-Framework-сборками Python в Mac OS X. Чтобы запустить эту программу, вам понадобится запуск python framework.

    И еще правильнее не выполнять команды sudo без понимания их. Почему вы, возможно, сможете это увидеть, но не сможете запустить его, может быть из-за того, что среда не установлена ​​правильно как sudo. Как сохранить переменные среды при использовании SUDO

    если вы запустите which frameworkpython он должен показать вам путь к исполняемому файлу в файловой системе. Я бы проверить права доступа к файлу в этом файле, в частности проверить право собственности.

     ls -l $(which frameworkpython) 

    Ouptut, which frameworkpython должен быть путём, который может быть выполнен с помощью root, но я бы избегал его, так как любые другие зависимости могут быть неправильно загружены или могут иметь неправильные разрешения, он может работать сейчас, но вы получите проблема позже сверху.

     /path/to/frameworkpython krls.py 

    Когда я столкнулся с этой проблемой, этот блог был потрясающим ресурсом.

     sudo apt-get install tk-dev libpng-dev libffi-dev dvipng texlive-latex-base 

    Затем удалите и переустановите matplotlib:

     pip uninstall matplotlib pip install matplotlib 

    Чтобы ответить на вопрос Педро Каттори, самый простой способ, который работал каждый раз для меня, – просто использовать python 3 с виртуальным env, как в:

     python -m venv my-virtualenv source my-virtualenv/bin/activate 

    или

     python3 -m venv my-virtualenv source my-virtualenv/bin/activate 

    с оригинальной страницы часто задаваемых вопросов: http://matplotlib.org/faq/osx_framework.html#osxframework-faq

    Все, что я пробовал, привело к смешному количеству кода и времени, потраченному на выяснение того, что случилось. С этим он всегда работает каждый раз без меня, делая намного больше, чем pip, устанавливающий matplotlib.

    Python - лучший язык программирования в мире.