我使用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-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

其他回答

在一个新的Debian镜像上,克隆https://github.com/python/cpython并运行:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev

现在执行上面克隆的配置文件:

./configure
make # alternatively `make -j 4` will utilize 4 threads
sudo make altinstall

安装了3.7,为我工作。

轻微的更新

看起来我说过我会用更多的解释来更新这个答案,两年后我没有什么可补充的了。

这篇SO帖子解释了为什么像python-dev这样的库可能是必要的。 这篇SO帖子解释了为什么在make命令中使用altinstall而不是install参数。

除此之外,我猜选择是阅读cpython代码库,寻找需要满足的#include指令,但我通常做的是继续尝试安装包,并继续阅读输出,安装所需的包,直到成功。

这让我想起了工程师、经理和程序员的故事,他们的汽车滚下了山坡。

如果你在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

我正在使用MAC M1,我有这个错误:

... __boot__.py", line 30, in <module> import ctypes
and something was said about the file libffi.8.dylib

我在Anaconda上下载了这个东西,现在一切都正常了:

https://anaconda.org/wakari/libffi

我告诉你,因为上面的大部分内容不是针对MAC的,就是过时了,我的Python版本是Anaconda 3.10.4

使用py2app创建的应用程序文件现在可以工作了!!

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

sudo apt-get install synaptic

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

./configure
make install.

这应该能解决你的问题。

我想我应该添加Centos安装:

sudo yum -y install gcc gcc-c++ 
sudo yum -y install zlib zlib-devel
sudo yum -y install libffi-devel 

检查python版本:

python3 - v

创建virtualenv:

virtualenv -p python3 venv