Mac - Python - ошибка импорта: "Нет модуля с именем сайта"
Сегодня вечером я пытаюсь установить пакет под названием "запросы" и начал возиться с терминалом, и у меня нет особой интуиции, когда дело доходит до такого рода вещей.
Компьютер Mac mini, OSX версии 10.9.4
В /Library/Python у меня есть 4 папки: 2.3, 2.5, 2.6 и 2.7.
В/Приложения у меня есть "Python 2.7" и "Python 3.4"
Я могу открыть IDLE и набрать 8 + 8, и я получаю 16 просто отлично.
Вот ошибка, которую я получаю в терминале:
host-210-117:~ Mario$ python
ImportError: No module named site
host-210-117:~ Mario$ pip
ImportError: No module named site
Моя цель - запустить эту команду в терминале:
pip install requests
Я считаю, что пипс уже установлен. Я запускаю файл "get-pip.py" в IDLE, и он говорит следующее:
Requirement already up-to-date: pip in /Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg
Cleaning up...
Это может быть как-то связано с путями? Я был бы признателен за некоторые рекомендации/советы/подсказки, спасибо!
Да, и немного больше информации, которая может помочь решить этот вопрос. Вот первые несколько строк программы, которую я запускаю:
import base64
import hmac
import json
import requests
import time
import urllib
import os
Что дает мне эту ошибку в IDLE (так что я думаю, это импортирует эти первые несколько пакетов без проблем?):
>>>
Traceback (most recent call last):
File "/Users/Mario/Desktop/pyak/pyak.py", line 4, in <module>
import requests
ImportError: No module named requests
>>>
***** Список системных путей:
sys.path
['/Users/Mario/Desktop/pyak', '/Users/Mario/Documents', '/Library/Python/2.7/site-packages/pip-1.5.6-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']
*** еще одно обновление:
host-210-117:~ Mario$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
*** немного больше информации (это должно произойти?)
host-210-117:~ Mario$ which pip
/usr/local/bin/pip
host-210-117:~ Mario$ pip
ImportError: No module named site
*** После изменения .bashrc
.bashrc: вот что в файле
export PATH = "$ PATH: $ HOME/.rvm/bin" # Добавить RVM в PATH для сценариев
псевдоним python =/library/Python/2.7/python
Вот результат работы:
pip install requests
host-210-117: ~ запросы на установку Mario $ pip
Загрузка/распаковка запросов
Загрузка запросов-2.4.1-py2.py3-none-any.whl(458 КБ): 458 КБ загружено
Установка собранных пакетов: запросы
Очистка...
Исключение:
Traceback (последний вызов был последним):
Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py", строка 122, в основном status = self.run (параметры, аргументы)
Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/install.py", строка 283, в работе require_set.install(install_options, global_options, root = options.root_path)
Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", строка 1435, в установке require.install(install_options, global_options, * args, ** kwargs)
Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", строка 671, в установке self.move_wheel_files (self.source_dir, root = root) Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py", строка 901, в move_wheel_files pycompile = self.pycompile,
Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/wheel.py", строка 215, в move_wheel_files Clobber (источник, lib_dir, True)
Файл "/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/wheel.py", строка 205, в клоббере os.makedirs(DESTDIR)
Файл "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", строка 157, в makedirs mkdir (имя, режим)
OSError: [Errno13] В доступе отказано: '/Library/Python/2.7/site-packages/requests'
Хранение журнала отладки для сбоя в /Users/Mario/Library/Logs/pip.log
Ответы
Ответ 1
Из того, что я могу сказать, у вас есть три версии Python в вашей системе.
- Тот, который поставляется с OSX
/Library/Frameworks/Python.framework/Versions/2.7/
- Python 2.7 из python.org
/Library/Python/2.7/site-packages
- Python 3.4 из python.org
pip установлен на версию Python 2.7, которую вы загрузили (тот, который вы видите в папке "Приложения" ), к сожалению, Python по умолчанию для вашей оболочки - это тот, который поставляется с OSX, и там не установлен протокол.
IDLE также поставляется вместе с загруженным Python, поэтому он продолжает сообщать вам о том, что пакет установлен, но он не работает из оболочки.
Поскольку вы, вероятно, используете Python, загруженный с python.org в качестве вашего "основного" Python (в конце концов, его с помощью IDLE, который вы используете), вам нужно настроить среду оболочки на этот Python по умолчанию.
Самый простой способ - добавить переменную в .bashrc
, которая создает псевдоним python
и указывает его в правый двоичный файл. Для этого добавьте эту строку в /Users/yourusername/.bashrc
- файлы с .
скрыты по умолчанию, поэтому вам нужно будет записать полное имя файла в командной строке, чтобы открыть его. Добавьте следующую строку:
alias python=/Library/Python/2.7/python
Сохраните файл, а затем закройте все окна терминала и снова откройте его. Теперь введите pip
и он должен работать корректно, а затем вы можете перейти к установке запросов.
В будущем обратитесь к одной версии Python. Я лично игнорирую вложенную версию и использую одну из brew
, но вы можете придерживаться Python, загруженного с python.org.
Ответ 2
Я исправил мой:
brew reinstall python
Он исправил все мои сломанные пути. Я думаю, я сломал его сломанным пакетом brew, который имел неправильную зависимость от версии python или что-то в этом роде.
Ответ 3
site.py - стандартный модуль, который по умолчанию запускается python. Он позволяет настраивать sys.path и запускать некоторый код перед запуском вашего кода. Он должен жить в стандартной библиотеке и вряд ли может быть каким-то образом отсутствует. Однако вы можете отключить автоматический импорт модуля, передав -s переключиться на python.
В любом случае вам следует как-то проверить, почему модуль не может быть импортирован. Попробуйте просмотреть список sys.path.
Ответ 4
Вы пытаетесь установить пакет в '/Library/Python/2.7/site-packages/requests', но для этого требуются права root. Это должно сделать трюк:
$ sudo pip install requests
Ответ 5
Я встретил тот же вопрос, и информация об ошибке:
ModuleNotFoundError: No module named 'xxx'
и, наконец, решена с помощью
brew install python3
brew link python3
sudo python3 -m pip install xxx
// or 'sudo python3 -m pip install -r requirements.txt'
Ответ 6
sudo easy_install pip
sudo pip install requests