it-swarm.dev

Python3:ImportError:使用模块多处理中的值时,没有名为“_ctypes”的模块

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

68
htc_m8

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

要干净地构建py 3.7 libffi-dev是必需的,否则以后的东西会失败

如果使用RHEL/Fedora:

yum install libffi-devel

要么

Sudo dnf install libffi-devel

如果使用Debian/Ubuntu:

Sudo apt-get install libffi-dev
121
dotbit

在一个新的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文件:

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

已安装3.7并为我工作。

轻微更新

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

  • 这SO post 解释为什么像python-dev这样的某些库可能是必要的。
  • this SO post 解释为什么人们可以在 make 命令中使用altinstall而不是install参数。

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

让我想起了 工程师,经理和程序员的故事,他的车在山上滚动

97
MikeiLL

在CentOS或任何redhat linux机器上安装Python 3.7的详细步骤:

  1. https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz 下载Python
  2. 提取新文件夹中的内容
  3. 在同一目录中打开终端
  4. 一步一步运行以下代码:
Sudo yum -y install gcc gcc-c++ 
Sudo yum -y install zlib zlib-devel
Sudo yum -y install libffi-devel 
./configure
make
make install
16
Alok Deep

以为我会添加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

11
S.E Furgeson

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

1
pengchy