2016-06-29 2 views
15

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

$ frameworkpython krls.py 

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

Permission denied 

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

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

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

frameworkpython krsl.py -bash:/Users/my_name/путь/venv/бен/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. К сожалению, я прошел через их сайт и не смог найти, как это сделать.

+0

Вы пытались установить «колесо» через пип? (и обновление pip/wheel/setuptools) – sytech

+0

@Gator_Python Я сделал список пипсов, и он говорит, что у меня есть колесо (0.29.0). Я попробовал обновить его с помощью 'pip install wheel --upgrade', но он, похоже, вышел из строя, потому что он сказал, что« Требование уже обновлено »: –

+3

* Самый простой способ - использовать [anaconda] (https: // docs. continuum.io/anaconda/install#anaconda-for-os-x-graphical-install). Я знаю, что это не совсем идеальный ответ, но я буду продолжать искать. Анаконда будет отдельной средой. Он включает в себя [все эти пакеты] (https://docs.continuum.io/anaconda/pkg-docs) – sytech

ответ

6

Update:

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

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

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


Оригинал Ответ:

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

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

От Linux/Unix docs (я добавил жирный шрифт):

PATH is an environmental variable in Linux and other Unix-like operating systems that tells the shell which directories to search for executable files.

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


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

Unfortunately virtualenv creates a non framework build even if created from a framework build of Python.

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

+0

Почему я должен изменить исполняемый файл сценария? Кажется странным, не так ли? –

+0

Короткий ответ: '$ PATH' находит только исполняемые файлы –

+0

Почему мне не нужно запускать скрипт 'frameworkpython' каждый раз, когда я активирую свою среду? Кажется, что файл только меняет путь, но я не запускаю этот скрипт каждый раз, когда я активирую свою среду. –

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

Затем деинсталлировать и заново Matplotlib:

pip uninstall matplotlib 

pip install matplotlib 
+0

, что для Linux ... моя проблема - OSX (см. заголовок). –

+0

ahh. .I не видел этого.Я постараюсь найти нужное вам решение. – user3480223

+0

не беспокоится. случается с лучшими из нас. –

2

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

brew install cmake 

квас является довольно стандартным OSX зависимость.

Вы правы в определении того, что это проблема с каркасом Differences between Framework and non-Framework builds of Python on Mac OS X Чтобы запустить эту операцию, вам понадобится запустить python framework.

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

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

ls -l $(which frameworkpython) 

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

/path/to/frameworkpython krls.py 

Когда я столкнулся с этой проблемой this blog был удивительный ресурс.

3

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

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

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

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

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

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

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

Sourcing frameworkpython как обычный пользователь (! не корень, пожалуйста) и импортирующие 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 
+0

Кажется, это была проблема с разрешениями. Почему, по-вашему, мне пришлось менять флаг? –

+0

В вашей второй точке 2), как узнать, что является правильным местом для ссылки на мой питон? Недавно я создал новую среду с python 3.5, и я не могу сделать работу frameworkpython. В нем говорится, что команда 'frameworkpython' не существует, что не может ее найти. Я вижу файл frameworkpython, и он только меняет среду, но когда я запускаю его, он разбивает мой весь терминал, его немного странно. Вы получили его для работы с python 3.5? –

+0

Извините, я не тестировал это для python 3.x - вы проверяли ответы на часто задаваемые вопросы и содержимое '' frameworkpython''? – jbndlr

3

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

Установка: Из командной строки просто создайте виртуальную среду и установите ее там. Вот пример того, как настроить Конду (подставьте соответствующее имя окружения и питон номер версии соответственно):

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 являются:

0

Повторяя ответ Педро Cattori, в самый простой способ, который работает каждый раз для меня это просто использовать Python 3 с виртуальной окр как в:

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

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

Смежные вопросы