python3.7 的 pip (Ubuntu 16.04)

Apo*_*pta 10 python pip python-3.x ubuntu-16.04

我无法为 python 3.7 安装 pip。当我尝试在线搜索时,我发现的一种解决方案是使用 get-pip.py 安装 pip。但是,它对我来说失败了:

sudo python3.7 get-pip.py
Traceback (most recent call last):
  File "get-pip.py", line 21373, in <module>
    main()
  File "get-pip.py", line 197, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    import pip._internal
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/__init__.py", line 40, in <module>
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/cli/autocompletion.py", line 8, in <module>
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/cli/main_parser.py", line 12, in <module>
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/commands/__init__.py", line 6, in <module>
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/commands/completion.py", line 6, in <module>
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/cli/base_command.py", line 19, in <module>
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/download.py", line 37, in <module>
  File "/tmp/tmp3273u8va/pip.zip/pip/_internal/utils/glibc.py", line 3, in <module>
  File "/usr/local/lib/python3.7/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'

Run Code Online (Sandbox Code Playgroud)

现在,为了解决这个问题,我发现libffi-dev应该安装这个包。但是,我确认该软件包已安装在我的系统上。我不知道我应该如何解决这个问题。有人可以帮忙吗?

sudo apt-get install libffi-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libffi-dev is already the newest version (3.2.1-4).
0 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.

Run Code Online (Sandbox Code Playgroud)

更新:我按照步骤从https://serverfault.com/questions/918335/best-way-to-run-python-3-7-on-ubuntu-16-04-which-comes-with安装 Python 3.7 -python-3-5。另外,当我检查 pip3.7 安装时,我得到的输出为

$ pip3.7 --version
pip 19.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
$ sudo apt install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3-pip is already the newest version (8.1.1-2ubuntu0.4).
0 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.
Run Code Online (Sandbox Code Playgroud)

但是当我执行我的程序时,我收到类似/usr/local/bin/python3.7: No module named pip.

nic*_*3ts 8

其实要简单很多。假设您的 Linux 是基于 Debian 的(例如,Ubuntu),您应该根据需要sudo apt install python3-pip为 Python 3.x 或sudo apt install python-pipPython 2.x安装 pip 。

如果您的操作系统不是基于 debian 的,只需更改正在使用的包管理器(例如使用 yum 或 pacman 而不是 apt)。

在这里,您还可以找到在 Ubuntu 18.04 上安装 pip 的指南。

希望这可以帮助!

  • 是的,它返回```python3-pip 已经是最新版本```。但我的问题是 python3.7 无法识别 pip 并抛出一个错误,如我的更新中所述。 (2认同)
  • 嗯。有趣的。让我们试试`sudo apt install --reinstall python3.7 python3-pip`。 (2认同)

lov*_*sus 6

python3.7通过ppa( sudo add-apt-repository ppa:deadsnakes/ppa)在 Ubuntu 16.04 中安装(详细说明 ppa 安装 Python3.7

对我来说,Nick Tritsis 的回答没有用。安装的唯一方法pip是直接下载文件get-pip.py并在python 3.7上运行(根据官网方法

python3.7 get-pip.py
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我收到了一条错误消息

ERROR: Could not install packages due to an 
EnvironmentError: [Errno 13] Permission denied:
Run Code Online (Sandbox Code Playgroud)

一种不推荐的解决方案是使用sudo

sudo python3.7 get-pip.py
Run Code Online (Sandbox Code Playgroud)

推荐方案

可以--user在调用脚本时提供参数,如下所示:

  python3.7 get-pip.py --user
Run Code Online (Sandbox Code Playgroud)

感谢@Matthew Strasiotto,他向我推荐了这个解决方案。

替代方案

这种替代解决方案是为了好玩;它比推荐的更复杂:我们可以将选项添加--user到文件中。

所以我们打开文件get-pip.py并更改给出命令参数的代码行:我们在那里添加了--user使安装成为可能的参数。

原线:

# Add our default arguments
 args = ["install", "--upgrade", "--force-reinstall"] + args
Run Code Online (Sandbox Code Playgroud)

修改后的线路:

# Add our default arguments
args = ["install", "--user", "--upgrade", "--force-reinstall"] + args
Run Code Online (Sandbox Code Playgroud)

此修改后python3.7 get-pip.py运行顺利。