我使用Ubuntu,并安装了Python 2.7.5和3.4.0。在Python 2.7.5中,我能够成功地分配一个变量x = Value(' I ', 2),但在3.4.0中不能。我得到:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/local/lib/python3.4/multiprocessing/context.py", line 132, in Value
      from .sharedctypes import Value
   File "/usr/local/lib/python3.4/multiprocessing/sharedctypes.py", line 10, in <
module>
   import ctypes
   File "/usr/local/lib/python3.4/ctypes/__init__.py", line 7, in <module>
      from _ctypes import Union, Structure, Array
ImportError: No module named '_ctypes'

我刚刚通过安装3.4.0的源代码更新到了3.3.2。它安装在/usr/local/lib/python3.4.

我是否正确地更新到Python 3.4 ?

我注意到一件事,Python 3.4安装在usr/local/lib中,而Python 3.3.2仍然安装在usr/lib中,所以它没有被覆盖。


当前回答

没有根的CentOS

安装libffi-3.2(不使用libffi-3.3) wget ftp://sourceware.org/pub/libffi/libffi-3.2.tar.gz libffi-3.2.tar.gz cd libffi - 3.2 / . / configure——prefix = $ YOUR_LIBFFI_DIR Make && Make安装 安装Python3 ./configure——prefix=$YOUR_PATH/python/3.7.10 LDFLAGS=-L${YOUR_LIBFFI_DIR}/lib64 PKG_CONFIG_PATH=${YOUR_LIBFFI_DIR}/lib/pkgconfig——enable-shared Make && Make安装

谢谢JohnWSteill

其他回答

如何从源代码安装Python没有libffi在/usr/local?

从github下载libffi,安装到/path/to/local 下载python源代码并按以下配置进行编译:

export PKG_CONFIG_PATH=/path/to/local/lib/pkgconfig
./configure --prefix=/path/to/python \
    LDFLAGS='-L/path/to/local/lib -Wl,-R/path/to/local/lib' \
    --enable-optimizations
make
make install

如果你在Debian/Raspbian/Ubuntu上使用pyenv并得到错误“No module named '_ctypes'”(就像我一样),你需要运行以下命令:

sudo apt-get install libffi-dev
pyenv uninstall 3.7.6
pyenv install 3.7.6

使用你的python版本,而不是3.7.6

当我试图在Ubuntu 18.04中使用next命令安装Python 3.7.3时,遇到了这个错误:$ pyenv install 3.7.3。 运行$ sudo apt-get update && sudo apt-get install libffi-dev(此处建议)后,安装成功。 问题在那里得到了解决。

您必须从包管理器中加载缺少的php3 (Python3)模块。 如果你有Ubuntu,我推荐Synaptic Package Manager:

sudo apt-get install synaptic

在那里,您可以简单地搜索缺少的模块。搜索ctypes并安装所有的包。然后转到Python目录并执行

./configure
make install.

这应该能解决你的问题。

在我的例子中,导致各种Python安装问题(包括与_ctypes和libffi有关的问题)的是Linux / Linuxbrew上的Homebrew。一旦brew不再在$PATH中,pyenv又高兴了。