我使用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中,所以它没有被覆盖。


当前回答

我也有同样的问题。以上的方法对我来说都没用。关键的挑战是我没有根权限。因此,我首先下载libffi的源代码。然后我用常用的命令来编译:

./configure --prefix=desired_installation_path_to_libffi
make 

然后我重新编译python使用

./configure --prefix=/home/user123/Softwares/Python/installation3/  LDFLAGS='-L/home/user123/Softwares/library/libffi/installation/lib64'
make 
make install

在我的例子中,'home/user123/Softwares/library/libffi/installation/lib64'是libffi安装目录的路径。所以是定位。“/home/user123/ software /Python/installation3/ is”为Python安装目录的路径。根据您的情况修改它们。

其他回答

这解决了我在Debian上同样的错误:

sudo apt-get install libffi-dev

然后再次编译

参考:issue31652

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

安装libffi-dev和重新安装python3.7为我解决了这个问题。

为了干净地构建py 3.7,需要libffi-dev,否则后面的东西会失败

如果使用RHEL/Fedora:

yum install libffi-devel

or

sudo dnf install libffi-devel

如果使用Debian/Ubuntu:

sudo apt-get install libffi-dev

参考此线程或此线程,对于libffi的自定义安装,Python3.7很难找到libffi的库位置。另一种方法是在Makefile中设置CONFIGURE_LDFLAGS变量,例如CONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"。

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