#python #path #numpy
#python #путь #numpy
Вопрос:
При попытке собрать мой python, добавив к нему numpy, мне удалось где-то создать проблемы. Теперь, несмотря на то, что у меня установлены numpy и другие пакеты, такие как BeautifulSoup, я не могу импортировать их из python на моем Mac по умолчанию. Ранее я мог их импортировать.
Где я должен изначально искать потенциальные проблемы? Мой профиль bash? .profile? Где-то в python? Любая помощь будет оценена. Я очень новичок в установке пакетов, а также переменных пути, поэтому любые указания относительно того, где может быть ошибка, были бы полезны.
Редактировать
После следования совету Джона Кейса и вывода пути python это был результат:
['','/Library/Python/2.7/site-packages/pip-1.0.2-py2.7.egg',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages',
'/Library/Python/2.7/site-packages',
'/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg-info']
Должны ли эти пути включать в список мои установленные пакеты (такие как numpy и beautiful soup)?
РЕДАКТИРОВАТЬ 2
Это мой профиль bash. Из комментариев к моему вопросу кажется, что это может быть проблемой, поэтому я подумал, что включу их ниже. Как я могу изменить их, чтобы моя сборка python вернулась к установке вещей в нужном месте?
export PATH=/usr/local/bin:/usr/local/share/python:/usr/local/sbin:$PATH
# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH
Комментарии:
1. Вы можете запустить
python -c "import sys; print sys.path"
, который будет печатать каждый путь, гдеpython
находит доступные пакеты и модули.2. Спасибо, я сделал это и обновил свой вопрос данными из него.
3. Теперь посмотрите,
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
и вы увидите, какие пакеты были установлены.4. Извините, если это глупый вопрос. Как мне заглянуть в эти папки, чтобы точно проверить, где находятся мои пакеты?
5. Если вы откроете тот, который я упомянул выше (
site-packages
), вы должны увидеть, какие дополнительные пакеты вы добавили в установку python. Вы можете сделать это через Finder (откройте терминал и введитеopen <DIR>
) или непосредственно в Terminal (cd <DIR>; ls -l
).
Ответ №1:
Насколько я понимаю, вы создали пользовательский python, который отличается от вашей установки python по умолчанию.
Вы должны либо использовать недавно установленный python, либо указать путь numpy к установке по умолчанию. Есть 2 способа сделать второй выбор:
Предположим, что ваш модуль numpy находится в каталоге /Users/Me/python/modules .
-
Установите переменную среды для внешних модулей из командной строки:
setenv PYTHONPATH /Users/Me/python/modules
Чтобы сделать это постоянным для вашего пользователя, вы можете добавить эту строку в свой файл .bashrc.
-
В вашем коде вы можете добавить тот же каталог в свой path:
import sys sys.path.append('/Users/Me/python/modules') import numpy ...
Я надеюсь, что это поможет.
Комментарии:
1. Я не создал новый python. я все еще использую python, предоставленный Apple по умолчанию. Есть ли какие-либо причины, по которым я не должен использовать установку по умолчанию? Если я последую вашему первому шагу, приведет ли это к тому, что все мои библиотеки попадут в эту папку? Будут ли они все работать с моим python по умолчанию?
2. Могут быть некоторые причины для создания нового python, но в вашем случае в этом нет необходимости. Переменная среды PYTHONPATH указывает дополнительные пути к модулю python, и вы не должны помещать туда все свои модули. Модули в указанном пути будут работать как модули по умолчанию.
3. Это имеет смысл. До / после того, как я запустил это в своей командной строке, нужно ли мне что-либо делать с моими текущими настройками профиля bash?
4.
setenv
команда будет действовать только в текущем сеансе, если вы добавите эту команду в профиль bash некоторых пользователей, она станет постоянной, как и любая другая переменная среды. Если вы это сделаете, вам не нужно каждый раз запускать эту команду.