htc*_*_m8 86 python install compiler-errors failed-installation python-3.4
我正在使用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'
Run Code Online (Sandbox Code Playgroud)
我刚刚通过安装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中,所以它没有被覆盖.
dot*_*bit 173
安装libffi-dev
并重新安装python3.7为我解决了这个问题.
干净地建立py 3.7 libffi-dev
是必需的,否则以后的东西将失败
如果使用RHEL/Fedora:
yum install libffi-devel
Run Code Online (Sandbox Code Playgroud)
要么
sudo dnf install libffi-devel
Run Code Online (Sandbox Code Playgroud)
如果使用Debian/Ubuntu:
sudo apt-get install libffi-dev
Run Code Online (Sandbox Code Playgroud)
Mik*_*iLL 103
在一个新的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
Run Code Online (Sandbox Code Playgroud)
现在执行configure
上面克隆的文件:
./configure
make # alternatively `make -j 4` will utilize 4 threads
sudo make altinstall
Run Code Online (Sandbox Code Playgroud)
已安装3.7并为我工作.
看起来我说我会用更多的解释更新这个答案,两年后我没有太多补充.
除此之外,我想选择是通过cpython代码库来查找#include
需要满足的指令,但我通常做的是继续尝试安装软件包并继续阅读输出安装所需的软件包,直到它成功.
让我想起了工程师,经理和程序员的故事,他们的车从山上滚下来.
小智 91
如果您在 Debian/Raspbian/Ubuntu 上使用 pyenv 并收到错误“No module named '_ctypes'”(就像我一样),您需要运行以下命令:
sudo apt-get install libffi-dev
pyenv uninstall 3.7.6
pyenv install 3.7.6
Run Code Online (Sandbox Code Playgroud)
把你的python版本而不是3.7.6
小智 21
_ctypes
在我的 Ubuntu 18.04 机器上,我遇到了 python 无法找到安装了 pyenv 的 python的常见问题。
就我而言libffi-dev
已经安装了。cpython
按照@MikeiLL的建议,从源代码安装也没有帮助。
原来是自制程序的问题。
ajkerrigans 在 pyenvs github issues 上建议的解决方案为我解决了这个问题。
解决方案摘要:告诉 pyenv 使用 Homebrew 管理的 GCC 构建 Python,命令如下:
CC="$(brew --prefix gcc)/bin/gcc-11" \
pyenv install --verbose 3.10.0
Run Code Online (Sandbox Code Playgroud)
这假设所有构建依赖项也已按照pyenv wiki中的指定通过 Homebrew 安装。在撰写本文时,Linux 上的 Homebrew 看起来像这样:
brew install bzip2 libffi libxml2 libxmlsec1 openssl readline sqlite xz zlib
Run Code Online (Sandbox Code Playgroud)
小智 20
在CentOS或任何redhat linux机器上安装Python 3.7的详细步骤:
Run Code Online (Sandbox Code Playgroud)sudo yum -y install gcc gcc-c++ sudo yum -y install zlib zlib-devel sudo yum -y install libffi-devel ./configure make make install
小智 13
以为我会添加Centos安装:
sudo yum -y install gcc gcc-c++
sudo yum -y install zlib zlib-devel
sudo yum -y install libffi-devel
Run Code Online (Sandbox Code Playgroud)
检查python版本:
python3 -V
创建virtualenv:
virtualenv -p python3 venv
has*_*.sd 11
这为我在Debian上解决了同样的错误:
sudo apt-get install libffi-dev
Run Code Online (Sandbox Code Playgroud)
并再次编译
参考:issue31652
小智 10
没有一个解决方案有效。你必须再次重新编译你的python;一旦完全安装了所有必需的软件包。
按照这个:
./configure --enable-optimizations
https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be
Tra*_*tal 10
根据这个答案,只需复制粘贴到终端即可。
第一次运行:
sudo apt-get -y update
然后:
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
Run Code Online (Sandbox Code Playgroud)
PS:您可以一次性将整个块复制粘贴到终端中。
就我而言,导致各种 Python 安装问题的原因包括与_ctypes
Linux / Linuxbrew 上的 Homebrewlibffi
有关的问题。曾经的幸福再次不再存在了。pyenv
brew
$PATH