Python3:ImportError:没有名为'_ctypes';使用模块多处理中的值时
我正在使用Ubuntu并安装了Python 2.7.5和3.4.0。在Python2.7.5中,我能够成功地分配变量Python3:ImportError:没有名为'_ctypes';使用模块多处理中的值时,python,compiler-errors,installation,python-3.4,failed-installation,Python,Compiler Errors,Installation,Python 3.4,Failed Installation,我正在使用Ubuntu并安装了Python 2.7.5和3.4.0。在Python2.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
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'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python3.4/multiprocessing/context.py”,第132行,输入值
from.SharedTypes导入值
文件“/usr/local/lib/python3.4/multiprocessing/sharedtypes.py”,第10行,在<
模块>
导入ctypes
文件“/usr/local/lib/python3.4/ctypes/_init__.py”,第7行,在
从类型导入联合、结构、数组
ImportError:没有名为“\u 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中,因此它没有被覆盖。在新的Debian映像上,克隆并运行:
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并为我工作
轻微更新
看起来我说过我会用更多的解释来更新这个答案,两年后我没有什么要补充的了
- 解释为什么某些库(如
)可能是必需的python dev
- 解释为什么可以在命令中使用
而不是altinstall
参数install
#include
指令,但我通常会一直尝试安装软件包,并一直通读安装所需软件包的输出,直到成功
让我想起了。我想添加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
安装libffi-dev
并重新安装python3.7修复了我的问题
需要干净地构建py 3.7libffi dev
,否则以后的工作将失败
如果使用RHEL/Fedora:
yum install libffi-devel
或
如果使用Debian/Ubuntu:
sudo apt-get install libffi-dev
在CentOS或任何redhat linux机器上安装Python 3.7的详细步骤:
请参阅或,对于libffi的定制安装,Python3.7很难找到libffi的库位置。另一种方法是在Makefile中设置
CONFIGURE\u LDFLAGS
变量,例如CONFIGURE\u LDFLAGS=“-L/path/to/libffi-3.2.1/lib64”
当我试图在Ubuntu 18.04中安装Python 3.7.3时遇到这个错误,下一个命令是:$pyenv install 3.7.3
。
运行$sudo apt get update&&sudo apt get install libffi dev
后安装成功(如建议)。
该问题已解决。所有解决方案均无效。您必须重新编译python;一旦所有必需的软件包全部安装完毕 遵循以下步骤:
/configure--启用优化
如果您使用pyenv并在Debian/Raspbian/Ubuntu上出现错误“没有名为“\u ctypes”的模块(就像我一样),您需要运行以下命令:
sudo apt-get install libffi-dev
pyenv uninstall 3.7.6
pyenv install 3.7.6
./configure --prefix=desired_installation_path_to_libffi
make
如果你正在做一些没有人会听你说的事情,因为“你做得不对”,但是你不得不“用错误的方式”去做,原因太过愚蠢而无法解释,也超出了你的控制能力,那么你可以尝试以下方法: 获取libffi并以通常的方式将其安装到用户安装区域
git clone https://github.com/libffi/libffi.git
cd libffi
./configure --prefix=path/to/your/install/root
make
make install
然后返回Python 3源代码,在Python源代码目录顶层的setup.py中找到这部分代码
ffi\u inc=[sysconfig.get\u config\u var(“LIBFFI\u INCLUDEDIR”)]
如果不是外国金融机构股份有限公司或外国金融机构股份有限公司[0]='':
ffi_inc=查找文件('ffi.h',[],inc_dirs)
如果ffi_inc不是无:
ffi_h=ffi_inc[0]+'/ffi.h'
如果操作系统路径不存在(ffi_h):
ffi_公司=无
打印('头文件{}不存在'。格式(ffi_h))
ffi_lib=无
如果ffi_inc不是无:
对于('ffi','ffi_pic')中的lib_名称:
if(self.compiler.find_library_文件(lib_dirs,lib_name)):
ffi_lib=lib_名称
打破
ffi_lib=“ffi”#---并在此处插入未显示的此行---
如果ffi_公司和ffi_lib:
外部包含目录扩展(ffi公司)
ext.libraries.append(ffi_lib)
self.use\u system\u libffi=True
并添加我在上面用注释标记的行。为什么这是必要的,为什么在Linux平台上没有系统ffi的情况下,无法让配置得到尊重,也许我会在接下来的几个小时内发现为什么这是“不受支持的”,但从那以后一切都正常了。否则,祝你好运。。。YMMV
它的作用:只需重写那里的逻辑,并使编译器链接命令添加“-lffi”,这就是它真正需要的。如果您安装了库用户,则只要您的
PKG_CONFIG_PATH
包含PATH/to/your/install/root/lib/pkgconfig
,如果您不介意使用,则默认情况下会安装必要的外部库和_ctypes,那么它可能可以很好地检测到头。它确实占用了更多的空间,并且可能需要使用较旧的Python版本(例如,在撰写本文时使用3.7.6而不是3.8.2)。您必须加载缺少的php3(Python3)模块
git clone https://github.com/libffi/libffi.git
cd libffi
./configure --prefix=path/to/your/install/root
make
make install
sudo apt-get install synaptic
./configure
make install.
sudo apt-get install libffi-dev
./configure --prefix=desired_installation_path_to_libffi
make
./configure --prefix=/home/user123/Softwares/Python/installation3/ LDFLAGS='-L/home/user123/Softwares/library/libffi/installation/lib64'
make
make install
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
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt-get -y install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get -y install libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get -y install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get -y install libssl-dev openssl
sudo apt-get -y install libffi-dev