我似乎无法正确使用sudo pip install,因此它会安装到以下目录中:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
然后我可以使用python
导入模块我已经
了sudo pip install scikit-learn --upgrade
结果
Requirement already up-to-date: scikit-learn in /usr/local/lib/python2.7/site-packages
Cleaning up...
但是,它不在正确的目录
中如何将sudo pip install安装到正确的目录中?
此外,我已尝试
sudo pip install Scrappy
我收到以下消息
new-host-2:site-packages Chris$ sudo pip install Scrapy
Password:
Requirement already satisfied (use --upgrade to upgrade): Scrapy in /usr/local/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): w3lib>=1.8.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.2 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /usr/local/lib/python2.7/site-packages (from Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cryptography>=0.2.1 in /usr/local/lib/python2.7/site-packages (from pyOpenSSL->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/site-packages (from zope.interface>=3.6.0->Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cffi>=0.8 in /usr/local/lib/python2.7/site-packages (from cryptography>=0.2.1->pyOpenSSL->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python2.7/site-packages (from cffi>=0.8->cryptography>=0.2.1->pyOpenSSL->Scrapy)
这两个实例都证明它已安装但不正确。例如,当我在python中运行以下导入时:
import scrapy
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-6-51c73a18167b> in <module>()
----> 1 import scrapy
ImportError: No module named scrapy
我尝试过以下方法:
sudo ln -s /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
答案 0 :(得分:25)
从评论到原始问题,似乎你安装了多个版本的Python,而pip只是错误的版本。
首先,要知道您正在使用哪个版本的python,只需输入which python
即可。你应该看到:
which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
如果您要访问正确版本的python,或者:
which python
/usr/bin/python
如果你要去找错误的话。版。要使pip转到正确的版本,首先必须更改路径:
export PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin/python:${PATH}
键入&#39;哪个python&#39;现在可以让你找到正确的结果。接下来,安装pip(如果尚未为此python安装安装pip)。最后,使用它。你现在应该没事。
答案 1 :(得分:4)
这对我在Windows上有用。原因是多个python安装
python -m pip uninstall pip setuptools
答案 2 :(得分:2)
pip
可执行文件实际上是一个Python脚本。
默认情况下它包含(在Linux上):
#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.5.6','console_scripts','pip'
__requires__ = 'pip==1.5.6'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
)
因此,如果您在MacOS中使用相同内容,pip
将始终使用/usr/bin/python
。
但这是默认值。您仍然可以通过编辑文件或显式使用python来提供所需的python版本。
如果which python
返回/usr/bin/python
,则在您安装自己的版本时会出现问题。如果是/Library/Frameworks/Python.framework/Versions/2.7/bin/python
,您可以直接致电:
sudo python `which pip` install scikit-learn --upgrade
然而,很有可能它不会起作用。原因是sudo
正在重置所有环境变量。为了使其工作,最简单的方法是使用:
sudo -E pip install scikit-learn --upgrade
或
sudo -E python `which pip` install scikit-learn --upgrade
取决于您的设置。
pip
并未被视为root
应执行的内容。实际使用它的最佳方法是安装本地非root用户python版本。您必须确保默认情况下通过设置正确的环境变量(例如Linux上的PATH
)来使用它,然后使用该python版本安装pip
而不使用sudo
。< / p>
更好的方法是从根安装设置virtualenv
。
通过这种方式,您可以在没有root权限的情况下安装/更新任何您想要的内容,并且再也不用担心sudo pip
无效的原因。您还可以避免为Pypi上的任何内容提供root权限,这样可以保证您不会将系统库与您自己的系统库混用。
答案 3 :(得分:2)
Virtualenv是你的朋友
即使您想要将软件包添加到主安装中,最好还是先在虚拟环境中进行,以确保与其他软件包的兼容性。但是,如果你熟悉virtualenv,你可能会发现没有理由在你的基本安装中安装任何东西。
答案 4 :(得分:1)
我完全赞同这些人,使用 virtualenv 会更好,这样您就可以为每个项目设置自定义环境。它非常适合维护,因为它对于每个项目来说都是一个不同的世界,并且您所做的每个应用程序的更新都不会干扰其他项目。
答案 5 :(得分:0)
答案 6 :(得分:0)
你可以改变shebang线。我一直在新系统上这样做。
如果您希望pip
安装到当前安装的Python版本,只需将shebang行更新为正确版本的pythons路径。
例如,要更改pip(而不是pip3)以安装到Python 3:
#!/usr/bin/python
要:
#!/usr/bin/python3
使用pip
安装的任何模块都应该安装到Python而不是Python。
或者你可以改变路径。
答案 7 :(得分:0)
我已经尝试过了,并且对我有用
curl -O https://files.pythonhosted.org/packages/c0/4d/d2cd1171f93245131686b67d905f38cab53bf0edc3fd1a06b9c667c9d046/boto3-1.14.29.tar.gz
tar -zxvf boto3-1.14.29.tar.gz
cd boto3-1.14.29/
用所需的python解释器替换X,因为我的是python3
sudo pythonX setup.py install
答案 8 :(得分:-1)
确保你的pip版本符合你的python版本。
使用python版本:
python -V
然后安装正确的点子。在这种情况下,您可能已经尝试使用:
pip-2.5安装......
pip-2.7安装......
或者对于那些使用macport的人来说,请确保您的版本匹配。
port select --list pip
然后更改为您正在使用的相同python版本。
sudo port select --set pip pip27
希望这会有所帮助。它适用于我。
答案 9 :(得分:-2)
你应该卸载现有的python,然后下载新版本。