Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Ubuntu 16.10上安装pip for Python 3.6?_Python 3.x_Ubuntu_Pip_Installation - Fatal编程技术网

Python 3.x 如何在Ubuntu 16.10上安装pip for Python 3.6?

Python 3.x 如何在Ubuntu 16.10上安装pip for Python 3.6?,python-3.x,ubuntu,pip,installation,Python 3.x,Ubuntu,Pip,Installation,我想首先指出,这个问题可能看起来像是重复的,但事实并非如此。我在这里看到的所有问题都是关于Python3的pip的,我现在谈论的是Python3.6。当时使用的步骤不适用于Python3.6 我得到了一个清晰的Ubuntu 16.10图像 运行apt get update 运行apt get install python3.6 运行apt get install python3 pip 运行pip3安装请求bs4 运行python3.6script.py 获得以下ModuleNotFoundEr

我想首先指出,这个问题可能看起来像是重复的,但事实并非如此。我在这里看到的所有问题都是关于Python3的pip的,我现在谈论的是Python3.6。当时使用的步骤不适用于Python3.6

  • 我得到了一个清晰的Ubuntu 16.10图像
  • 运行apt get update
  • 运行apt get install python3.6
  • 运行apt get install python3 pip
  • 运行
    pip3安装请求bs4
  • 运行
    python3.6script.py
  • 获得以下
    ModuleNotFoundError

     Traceback (most recent call last):
        File "script.py", line 6, in <module>
         import requests
     ModuleNotFoundError: No module named 'requests'
    

    至少在ubuntu 16.10中,默认的
    python3
    python3.5
    。因此,所有的
    python3-X
    软件包都将针对python3.5而不是python3.6安装

    您可以通过检查
    pip3的shebang来验证这一点:

    $ head -n1 $(which pip3)
    #!/usr/bin/python3
    
    幸运的是,
    python3pip
    包安装的pip被安装到“共享”的
    /usr/lib/python3/dist包中,这样python3.6也可以利用它

    您可以通过以下操作安装python3.6的软件包:

    python3.6 -m pip install ...
    
    例如:

    $ python3.6 -m pip install requests
    $ python3.6 -c 'import requests; print(requests.__file__)'
    /usr/local/lib/python3.6/dist-packages/requests/__init__.py
    

    假设您有一个运行Ubuntu16.04、16.10或17.04的系统,并且希望Python 3.6成为默认Python

    如果您使用的是Ubuntu 16.04 LTS,则需要使用PPA:

    sudo add-apt-repository ppa:jonathonf/python-3.6  # (only for 16.04 LTS)
    
    然后,运行以下操作(在16.10和17.04中,此操作是开箱即用的):

    完成以上所有操作后,以下每个shell命令都应指示
    Python 3.6.1
    (或Python 3.6的最新版本):


    这个答案假设您已经安装了
    python3.6
    。对于
    python3.7
    ,将
    3.6
    替换为
    3.7
    。对于
    python3.8
    ,将
    3.6
    替换为
    3.8
    ,但也可能首先需要
    python3.8-distutils

    使用sudo安装 关于,使用
    curl
    (而不是
    wget
    )可以避免将文件写入磁盘

    curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
    
    -H
    标志对于
    sudo
    显然是必要的,以防止在为更新的python解释器安装pip时出现以下错误:

    目录'/home/someuser/.cache/pip/http'或其父目录 不属于当前用户,缓存已被禁用。 请检查该目录的权限和所有者。如果执行 与sudo一起pip,您可能需要sudo的-H标志

    目录 “/home/someuser/.cache/pip”或其父目录不属于 已禁用当前用户和缓存控制盘。检查 该目录的权限和所有者。如果使用sudo执行pip, 你可能需要sudo的-H标志

    无sudo安装 这有时可能会发出警告,例如:

    警告:脚本控制盘安装在“/home/ubuntu/.local/bin”中 这不在正轨上。考虑将此目录添加到PATH或IF 如果希望抑制此警告,请使用--no warn脚本位置

    验证 在此之后,
    pip
    pip3
    pip3.6
    都可以指向相同的目标:

    $ (pip -V && pip3 -V && pip3.6 -V) | uniq
    pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
    
    当然,您也可以选择使用
    python3.6-mpip

    $ python3.6 -m pip -V
    pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
    

    这个网站包含了一个更干净的解决方案,它使pip保持完整,人们可以很容易地在3.5和3.6之间切换,然后在3.7发布时切换

    简短总结:

    sudo apt-get install python python-pip python3 python3-pip
    sudo add-apt-repository ppa:jonathonf/python-3.6
    sudo apt-get update
    sudo apt-get install python3.6
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
    
    然后

    然后选择Python3.6运行

    sudo update-alternatives --config python3
    
    然后选择“2”。然后

    $ pip3 -V
    pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
    
    要更新pip,请选择所需版本并

    pip3 install --upgrade pip
    
    $ pip3 -V
    pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
    

    在Ubuntu16.04上测试。

    试着下载并运行@Anthony Sottile,对如何使python 3.6成为默认值有什么建议吗?使python3.6成为pip默认值的一种方法是创建一个名为“pip”的可执行文件,但实际上是执行python3.6-m pip
    ——将其放入
    ~/bin
    /usr/local/bin
    。不建议替换操作系统默认的
    python3
    可执行文件,这会导致操作系统不稳定。我尝试此操作时,“没有名为pip的模块”。@Turtlesarete您是否安装了
    python pip
    (通过
    apt
    )?@Turtlesarete退出测试,这可能意味着您(在某个时候)运行了
    sudopip安装pip——升级
    ,这将把pip移到py35 dist包中。您可能可以使用
    sudo apt install重新安装python pip
    或使用上面评论中建议的python3.6使用
    get pip.py
    ,我认为应该是
    sudo ln-s/usr/local/bin/pip3.6/usr/local/bin/pip3
    ,as
    pip3
    默认为系统上安装的默认pip3.x。在我提供的示例中,pip通过
    sudo python3.6 get pip.py
    安装为
    /usr/local/bin/pip
    ,别名为
    /usr/local/bin/pip3
    。系统上没有
    /usr/local/bin/pip3.6
    。哦,好的。我现在明白了。创建了一个用于测试的Ubuntu服务器17.04,它只附带Python3.5.x,与Python2.x无关,并且没有安装
    pip
    。在
    apt安装python3.6/-dev/-env之后,我得到了python3.6.x,但是
    python3
    symlink仍然像预期的那样指向默认的python3.5.x。然后一个简单的
    sudoln-s/usr/bin/python3.6/usr/local/bin/python
    处理它。然后wget-pip.py并使用
    python
    (符号链接后的python 3.6.x)运行,就完成了。现在将您的anwser标记为正确的anwser,因为它感觉比旧的.fwiw更干净,不建议使用以下内容:
    sudo ln-s/usr/bin/python3.6/usr/local/bin/python
    “只要安装了任何版本的python 2,就应该安装更通用的
    python
    命令,并且应该调用与
    python2
    命令相同版本的python”。在Ubu上将
    python3.6
    链接到
    python
    可能会很危险
    sudo apt-get install python python-pip python3 python3-pip
    sudo add-apt-repository ppa:jonathonf/python-3.6
    sudo apt-get update
    sudo apt-get install python3.6
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
    sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
    
    $ pip -V
    pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
    $ pip3 -V
    pip 8.1.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)
    
    sudo update-alternatives --config python3
    
    $ pip3 -V
    pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
    
    pip3 install --upgrade pip
    
    $ pip3 -V
    pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)