今晚我正在尝试安装名为“请求”的软件包,并开始在终端上摸索,并且在涉及到这类事情时没有太多的直觉。
计算机是mac mini,osx版本10.9.4
在/ Library / Python我有4个文件夹:2.3 2.5 2.6和2.7。
在/ Applications我有“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
我相信pip已经安装好了。我在IDLE中运行文件“get-pip.py”,这就是它所说的:
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-package / download1.5.6-py2.7.egg','/ Library / Frameworks / Python.framework / Versions / 2.7 / lib / python27.zip','/ Library / Frameworks / Python.framework / Version / 1.7 / lib / python2.7','/ Library / Frame /Python.framework / Version / 2.7 / lib / python2.7 / plat-darwin','/ Library / Frame /Python.framework / Version / 7.7 / lib / python2.7 / plat-mac','/ Library / Frame /Python.framework / Version / 2.7 / lib / python2.7 / plat-mac / lib-scriptpackages','/ Library / Frame /Python.framework / Version / 1.7 / lib / python2.7 / lib -tk','/ Library / Frameworks / Python。 framework / Versions / 2.7 / lib / python2.7 / lib-old','/ Library / Frame /Python.framework / Version / 1.7 / lib / python2.7 / lib-dadload','/ 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 install requests
下载/拆包请求
正在下载请求-2.4.1-py2.py3-none-any.whl(458kB):458kB已下载
安装收集的包:请求
清理......
例外:
追溯(最近的呼叫最后):
文件“/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/basecommand.py”,第122行,主要
status = self.run(options,args)
运行文件“/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/commands/install.py”,第283行
requirement_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行
requirement.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)
在move_wheel_files中输入文件“/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/req.py”,第901行
pycompile = self.pycompile,
在move_wheel_files中输入文件“/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/wheel.py”,第215行
clobber(source,lib_dir,True)
文件“/Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg/pip/wheel.py”,第205行,在clobber中
os.makedirs(DESTDIR)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py”,第157行,在makedirs中
mkdir(名称,模式)
OSError:[Errno 13]权限被拒绝:'/ Library /Python/2.7/site-packages/requests'
在/Users/Mario/Library/Logs/pip.log中存储失败的调试日志
答案 0 :(得分:3)
据我所知,你的系统上有三个版本的Python。
/Library/Frameworks/Python.framework/Versions/2.7/
/Library/Python/2.7/site-packages
pip是针对您下载的Python 2.7版本(您在Applications文件夹中看到的那个)安装的,不幸的是,您的shell的默认Python 是与OSX捆绑的版本,那里没有安装点子。
IDLE也与您下载的Python捆绑在一起,这就是为什么它一直告诉您pip已安装,但它无法在shell中运行。
因为您可能正在使用从python.org下载的Python作为&#34; primary&#34; Python(毕竟,它是你正在使用IDLE的那个),你需要将你的shell环境设置为默认指向这个Python。
最简单的方法是在.bashrc
中添加一个变量,用于创建别名python
并将其指向正确的二进制文件。为此,请将此行添加到/Users/yourusername/.bashrc
- 默认情况下隐藏.
的文件,因此您必须在命令行中写入整个文件名才能打开它。添加以下行:
alias python=/Library/Python/2.7/python
保存文件,然后关闭所有终端窗口并再次打开。现在输入pip
,它应该可以正常工作,然后您可以继续安装请求。
为了将来参考,请尝试坚持使用一个版本的Python。我个人忽略捆绑的版本并使用brew
中的版本,但您可以坚持从python.org下载的Python。
答案 1 :(得分:1)
我用以下方法修理了我的。
brew reinstall python
它修复了我所有破碎的路径。我想我用破坏的brew包破坏了它,它具有错误的python版本依赖性或类似的东西。
答案 2 :(得分:0)
site.py是默认情况下由python运行的标准模块。它允许在代码开始运行之前调整sys.path并运行一些代码。它应该存在于标准库中,并且很难以某种方式消失。但是,您可以通过将-S开关传递给python来禁用模块的自动导入。
无论如何,您应该以某种方式检查无法导入模块的原因。尝试检查sys.path列表。
答案 3 :(得分:0)
您正尝试在'/Library/Python/2.7/site-packages/requests'中安装该软件包,但它需要root权限才能执行此操作。这应该可以解决问题:
$ sudo pip install requests
答案 4 :(得分:0)
我遇到了同样的问题,错误信息是:
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`
答案 5 :(得分:-2)
sudo easy_install pip
sudo pip install requests