我的最终目标是下载并安装awscli
http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html
似乎需要python和pip来实现我的目标。
通过yum安装python对我不起作用,所以我手动下载并安装了python3,如下所示:
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
cd Python-3.6.1.tar.xz
./configure
make
sudo make altinstall
当我这样做时
pip3.6 --version
我明白了:
Traceback (most recent call last):
File "/usr/local/bin/pip3.6", line 7, in <module>
from pip import main
ImportError: cannot import name 'main'
环境: RHEL 6.6 通过ssh访问
发生了什么事?如何在我的linux机箱上正确安装pip和python3.6?
编辑:
尝试通过yum安装时失败,所以我试图避免使用yum:
[asemani@rcdc9pfda5r Python-3.6.1]$ sudo yum -y install python-pip
[sudo] password for asemeani:
Loaded plugins: security
Setting up Install Process
No package python-pip available.
Error: Nothing to do
另一个编辑:
导入sys后再调用sys.path这就是我得到的:
[asemani@rcdc9pfda5r Python-3.6.1]$ python3.6
Python 3.6.1 (default, Apr 28 2017, 11:03:27)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
>>> quit()
[asemani@rcdc9pfda5r Python-3.6.1]$ ls -l /usr/local/lib/python3.6/site-packages
total 32
-rw------- 1 root root 126 Apr 27 23:45 easy_install.py
drwx------ 11 root root 4096 Apr 27 23:45 pip
drwx------ 2 root root 4096 Apr 27 23:45 pip-9.0.1.dist-info
drwx------ 5 root root 4096 Apr 27 23:45 pkg_resources
drwx------ 2 root root 4096 Apr 27 23:45 __pycache__
-rw-r--r-- 1 root root 119 Apr 27 23:45 README.txt
drwx------ 5 root root 4096 Apr 27 23:45 setuptools
drwx------ 2 root root 4096 Apr 27 23:45 setuptools-28.8.0.dist-info
答案 0 :(得分:68)
您需要像这样编辑pip3文件(您的路径可能不同):
nano /Library/Frameworks/Python.framework/Versions/3.6/bin/pip3
并更改导入主线,使其显示:
from pip._internal import main
在此更改后,我的pip3开始工作,我在macOS上。如果您使用的是Linux,那么您的路径可能类似于 / usr / bin / pip3
我从这个帖子中找到了这个提示和更多信息: see here
答案 1 :(得分:18)
我的操作系统是Linux Mint 18
sudo nano /usr/bin/pip3
更改
from pip import main
要
from pip._internal import main
答案 2 :(得分:17)
不要直接调用pip / pip3,这是不同用户在不同位置的快捷方式,当你升级pip时它们维护得不好(检查&#39;哪个pip&#39;和'sudo pip&#39;)。
$ sudo python -m pip install xxx #for python2
$ sudo python3 -m pip install xxx #for python3
这些命令没有快捷方式,直接调用pip模块,pip模块维护得很好(也适用于Windows)
答案 3 :(得分:6)
sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages
您可以在ls -l /usr/local/lib/python3.6/site-packages
输出中看到问题,即您的pip目录只能由所有者读取,即root。
答案 4 :(得分:5)
执行cd /usr/bin
然后sudo nano pip
以编辑pip文件
将from pip import main
更改为from pip._internal import main
这将解决问题
答案 5 :(得分:3)
尝试以下方法解决问题直到解决问题
sudo python -m pip --version
>> pip 10.0.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
sudo python -m pip install numpy --upgrade
>> Requirement already up-to-date: numpy in /usr/local/lib/python2.7/site-packages (1.14.2)
答案 6 :(得分:1)
我并不完全知道答案,但是:该错误表明脚本可以找到名为pip
的某些包,但不是正确的包。可能是旧版本的pip,在创建main
方法之前从后面开始(你可以从python shell中检查pip.__version__
)。
我愿意打赌你还有另一个旧版本的python,它有自己的pip版本。由于某种原因,你的pythonpath正在加载那个而不是py3.6的那个。
可以考虑的一些可能性:
我对redhat一无所知,但是有一些特定于redhat的方法可以选择使用“默认python”吗?
pip脚本顶部的shebang行是#!/usr/bin/env python
而不是像#!/usr/bin/python3.6
那样吗?
是否可以修改shell的PATH以便使用下载的python?
是否可以更改您的PYTHONPATH(我认为它会被添加到python中的sys.path
的默认值;查找它)以便它加载新的pip而不是旧的pip?< / p>
答案 7 :(得分:1)
我的操作系统是Mac sierra,我不得不更改以下行
from pip import main
到
from pip._internal import main
答案 8 :(得分:0)
似乎get pip脚本错过了一个以上版本的python可以驻留在一台机器上的事实。所以我添加了以下几行:
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
出于某种原因,它错过了这一点。无论如何这对我有用。谢谢你的帮助。
答案 9 :(得分:0)
执行以下步骤来解决问题-(Ubuntu-Debian)
第1步-转到目录
cd usr / bin /
并使用gedit或nano(通过终端)打开pip3文件。
第2步,将CREATE TABLE webhook_contexts(id integer, context_name character varying(100), context_description character varying(100) , users text REFERENCES webhook_userproperty(username) ON UPDATE CASCADE ON DELETE CASCADE);
更改为from pip import main
PS-如果您无权更改使用命令-from pip._internal import main
并保存此文件。
希望这会有所帮助!