Mac - Python - 导入错误:"没有名为site&#34的模块;

时间:2014-09-22 06:58:48

标签: python macos pip python-requests importerror

今晚我正在尝试安装名为“请求”的软件包,并开始在终端上摸索,并且在涉及到这类事情时没有太多的直觉。

计算机是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中存储失败的调试日志

6 个答案:

答案 0 :(得分:3)

据我所知,你的系统上有三个版本的Python。

  • OSX /Library/Frameworks/Python.framework/Versions/2.7/
  • 附带的那个
  • Python 2.7来自python.org /Library/Python/2.7/site-packages
  • 来自python.org的Python 3.4

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