Estou usando o Ubuntu e instalei o Python 2.7.5 e 3.4.0. No Python 2.7.5, consigo atribuir uma variável com sucesso x = Value('i', 2)
, mas não no 3.4.0. Estou obtendo:
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'
Acabei de atualizar para 3.3.2 através da instalação do código-fonte 3.4.0. Ele foi instalado em /usr/local/lib/python3.4 .
Eu atualizei para Python 3.4 corretamente?
Uma coisa que percebi é que o Python 3.4 está instalado em usr / local / lib , enquanto o Python 3.3.2 ainda está instalado em usr / lib , portanto não foi sobrescrito.
_ctypes
não foi criado porque alibffi-dev
dependência não estava disponível. Considere usar o Deadsnakes PPA .Respostas:
Instalar
libffi-dev
e reinstalar o python3.7 corrigiu o problema para mim.para compilar de forma limpa o py 3.7
libffi-dev
é necessário ou então o material irá falharSe estiver usando RHEL / Fedora:
ou
Se estiver usando Debian / Ubuntu:
fonte
libffi-dev
mas ainda estou recebendo este erroldconfig
para carregar o novolibffi.so
. O objetivo principal doapt-get install libffi-dev
é instalar um arquivo chamadolibffi.so
que você pode verificar pordpkg -L libffi-dev
@tushar_ecmcpyenv install
, por meio ), você precisará recompilar a distribuição após instalar o pacote.Em uma nova imagem do Debian, clonando https://github.com/python/cpython e executando:
Agora execute o
configure
arquivo clonado acima:Tenho o 3.7 instalado e funcionando para mim.
LEVE ATUALIZAÇÃO
Parece que eu disse que atualizaria esta resposta com mais algumas explicações e, dois anos depois, não tenho muito a acrescentar.
python-dev
podem ser necessárias.altinstall
oposto aoinstall
do comando make .Além disso, acho que a escolha seria ler a base de código cpython procurando por
#include
diretivas que precisam ser atendidas, mas o que eu normalmente faço é continuar tentando instalar o pacote e apenas continuar lendo a saída instalando os pacotes necessários até que tem sucesso.Lembra-me a história do Engenheiro, do Gerente e do Programador cujo carro desce uma ladeira .
fonte
python3-dev
vez depython-dev
.python-dev
parece parapython2
.sudo apt-get
? Isso simplesmente não faz sentido.sudo apt-get
lida com o download de código já compilado, então por que você baixa o código e não o usa?sudo
instruções são pré-requisitos de instalação para construir o código-fonte que você baixou. o./configure
emake
outras coisas requerem que essas coisas sejam instaladas.Se você usar o pyenv e receber o erro "Nenhum módulo chamado '_ctypes'" (como eu) no Debian / Raspbian / Ubuntu, você precisará executar estes comandos:
Coloque sua versão de python em vez de 3.7.6
fonte
pyenv
para realmente fazer as coisas funcionarem. Usar o pyenv é muito mais fácil do que pegar o código-fonte e fazer todas asmake
coisas com certeza.Etapas detalhadas para instalar o Python 3.7 no CentOS ou em qualquer máquina Linux redhat:
fonte
Pensei em adicionar as instalações do Centos:
Verifique a versão do python:
python3 -V
Crie virtualenv:
virtualenv -p python3 venv
fonte
Eu me deparo com esse erro quando tentei instalar o Python 3.7.3 no Ubuntu 18.04 com o próximo comando:
$ pyenv install 3.7.3
. A instalação foi bem-sucedida após a execução$ sudo apt-get update && sudo apt-get install libffi-dev
(como sugerido aqui ). O problema foi resolvido lá .fonte
Nenhuma das soluções funcionou. Você tem que recompilar seu python novamente; uma vez que todos os pacotes necessários foram completamente instalados.
Siga isso:
./configure --enable-optimizations
https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be
fonte
Consulte este tópico , para instalação personalizada de libffi, é difícil para Python3.7 encontrar a localização da biblioteca de libffi. Um método alternativo é definir a
CONFIGURE_LDFLAGS
variável no Makefile, por exemploCONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"
.fonte
Minha solução: Instalar libffi-dev com apt-get não ajudou. Mas isso ajudou: instalar o libffi do código-fonte e depois instalar o Python 3.8 do código-fonte.
Minha configuração: Ubuntu 16.04 LTS Python 3.8.2
Passo a passo:
Recebi a mensagem de erro "ModuleNotFoundError: Nenhum módulo chamado '_ctypes'" ao iniciar o depurador a partir do Visual Studio Code e ao executar
python3 -c "import sklearn; sklearn.show_versions()"
.sudo apt-get install libtool
O arquivo README.md da libffi menciona que autoconf e automake também são necessários. Eles já foram instalados no meu sistema../configure --disable-docs
make check
sudo make install
./configure
make
make test
make install
Depois disso, minha instalação do python pode encontrar _ctypes.
fonte
Isso resolveu o mesmo erro para mim no Debian :
e compilar novamente
Referência: issue31652
fonte
Se você não se importa em usar o Miniconda , as bibliotecas externas necessárias e _ctypes são instalados por padrão. Ele ocupa mais espaço e pode exigir o uso de uma versão moderadamente mais antiga do Python (por exemplo, 3.7.6 em vez de 3.8.2 no momento desta escrita).
fonte
Você tem que carregar os módulos php3 (Python3) ausentes do gerenciador de pacotes. Se você tem o Ubuntu, eu recomendo
Synaptic Package Manager
:Lá, você pode simplesmente pesquisar os módulos ausentes. procure por ctypes e instale todos os pacotes. Em seguida, vá para o seu diretório Python e faça
Isso deve resolver seu problema.
fonte
Eu estava tendo o mesmo problema. Nenhuma das soluções acima funcionou para mim. O principal desafio era que eu não tinha acesso root. Então, primeiro faço o download do código-fonte da libffi. Então eu o compilei com os comandos usuais:
Então eu recompilei o python usando
No meu caso, 'home / user123 / Softwares / library / libffi / installation / lib64' é o caminho para o diretório de instalação do LIBFFI onde libffi.so está localizado. E / home / user123 / Softwares / Python / installation3 / é o caminho para o diretório de instalação do Python. Modifique-os de acordo com seu caso.
fonte
Se você está fazendo algo, ninguém aqui vai ouvi-lo porque "você está fazendo da maneira errada", mas você tem que fazer "da maneira errada" por motivos muito estúpidos (por exemplo, no meu caso, rapidamente se transforma em algo sujo palavras sobre alguém na equipe devops (mãe com excesso de peso), você precisa primeiro:
Obtenha o libffi e instale-o na área de instalação do usuário da maneira usual.
Em seguida, volte ao seu código-fonte Python 3 e encontre esta parte do código em setup.py no nível superior do diretório de código-fonte python
e adicione a linha que marquei acima com o comentário. Por que é necessário, e por que não há como configurar para respeitar '--without-system-ffi` em plataformas Linux, talvez eu descubra por que isso é "não suportado" nas próximas horas, mas tudo tem trabalhou desde então. Caso contrário, boa sorte ... YMMV.
O QUE FAZ: apenas sobrescreve a lógica ali e faz com que o comando de vinculação do compilador adicione "-lffi" que é tudo o que ele realmente precisa. Se você tiver a biblioteca instalada pelo usuário, provavelmente ela está detectando bem os cabeçalhos, desde que
PKG_CONFIG_PATH
incluapath/to/your/install/root/lib/pkgconfig
.fonte