Moo*_*ani 24 python linux pip amazon-web-services rhel6
我的最终目标是下载并安装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
Run Code Online (Sandbox Code Playgroud)
当我做
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'
Run Code Online (Sandbox Code Playgroud)
环境: 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
Run Code Online (Sandbox Code Playgroud)
另一个编辑:
导入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
Run Code Online (Sandbox Code Playgroud)
Mul*_*eri 71
您需要像这样编辑pip3文件(您的路径可能不同):
nano /Library/Frameworks/Python.framework/Versions/3.6/bin/pip3
Run Code Online (Sandbox Code Playgroud)
并更改导入主线,因此它说:
from pip._internal import main
Run Code Online (Sandbox Code Playgroud)
在此更改后,我的pip3开始工作,我在macOS上.如果您使用的是Linux,那么您的路径可能类似于/ usr/bin/pip3
我从这个帖子中找到了这个提示和更多信息:https: //github.com/pypa/pip/issues/5240
小智 18
我的操作系统是Linux Mint 18
sudo nano /usr/bin/pip3
Run Code Online (Sandbox Code Playgroud)
更改
from pip import main
Run Code Online (Sandbox Code Playgroud)
至
from pip._internal import main
Run Code Online (Sandbox Code Playgroud)
Tin*_* LI 17
不要直接调用pip/pip3,这是不同用户在不同位置的快捷方式,升级pip时检查不好(检查'pip'和'sudo which pip').
$ sudo python -m pip install xxx #for python2
$ sudo python3 -m pip install xxx #for python3
Run Code Online (Sandbox Code Playgroud)
这些命令没有快捷方式,直接调用pip模块,它保持得很好(也适用于Windows)
小智 6
sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages
您可以在ls -l /usr/local/lib/python3.6/site-packages输出中看到问题,即您的pip目录只能由所有者读取,即root.
做一个 cd /usr/bin
然后sudo nano pip编辑pip文件
更改from pip import main到from pip._internal import main
这将解决问题
我不完全知道答案,但是:该错误表明脚本可以找到某个名为 的包pip,但不是正确的包。可能是 pip 的旧版本,在他们创建方法之前(您可以从 python shell 中main检查)。pip.__version__
我敢打赌,您仍然安装了另一个旧版本的 python,它有自己的 pip 版本。由于某种原因,您的 pythonpath 正在加载该路径,而不是 py3.6 附带的路径。
一些值得研究的可能性:
我对 redhat 一无所知,但是有没有一些特定于 redhat 的方法来选择要使用的“默认 python”?
pip 脚本顶部的 shebang 行是否类似于#!/usr/bin/env python而不是#!/usr/bin/python3.6应有的样子?
是否可以修改 shell 的 PATH 以便使用下载的 python?
是否可以更改你的 PYTHONPATH (我认为它被添加到sys.pathpython 内部的默认值;查找它),以便它加载新的 pip 而不是旧的 pip?
| 归档时间: |
|
| 查看次数: |
32870 次 |
| 最近记录: |