Saya menggunakan Ubuntu dan telah menginstal Python 2.7.5 dan 3.4.0. Dengan Python 2.7.5 saya berhasil menetapkan variabel x = Value('i', 2)
, tetapi tidak di 3.4.0. Saya mendapatkan:
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'
Saya baru saja memperbarui ke 3.3.2 dengan menginstal sumber 3.4.0. Itu diinstal di /usr/local/lib/python3.4 .
Apakah saya memperbarui ke Python 3.4 dengan benar?
Satu hal yang saya perhatikan bahwa Python 3.4 diinstal di usr / local / lib , sedangkan Python 3.3.2 masih diinstal di usr / lib , jadi tidak ditimpa.
_ctypes
tidak dibuat karenalibffi-dev
dependensi tidak tersedia. Pertimbangkan untuk menggunakan PPA deadsnakes sebagai gantinya.Jawaban:
Menginstal
libffi-dev
dan menginstal ulang python3.7 memperbaiki masalah bagi saya.untuk membangun py 3.7 dengan rapi
libffi-dev
diperlukan atau hal lain nanti akan gagalJika menggunakan RHEL / Fedora:
atau
Jika menggunakan Debian / Ubuntu:
sumber
libffi-dev
tetapi saya masih mendapatkan kesalahan inildconfig
untuk memuat yang barulibffi.so
. Tujuan utamanyaapt-get install libffi-dev
adalah untuk menginstal file bernamalibffi.so
yang dapat Anda periksa olehdpkg -L libffi-dev
@tushar_ecmcpyenv install
), Anda perlu mengkompilasi ulang distribusi tersebut setelah menginstal paket.Pada gambar Debian baru, kloning https://github.com/python/cpython dan jalankan:
Sekarang jalankan
configure
file kloning di atas:Mendapat 3,7 terinstal dan bekerja untuk saya.
PEMBARUAN SEDIKIT
Sepertinya saya mengatakan saya akan memperbarui jawaban ini dengan beberapa penjelasan lagi dan dua tahun kemudian saya tidak punya banyak hal untuk ditambahkan.
python-dev
mungkin diperlukan.altinstall
sebagai lawaninstall
argumen dalam perintah make .Selain itu, saya kira pilihannya adalah membaca basis kode cpython yang dicari
#include
arahan yang perlu dipenuhi, tetapi yang biasanya saya lakukan adalah terus mencoba menginstal paket dan terus membaca output menginstal paket yang diperlukan sampai itu berhasil.Mengingatkan saya pada kisah Insinyur, Manajer, dan Programmer yang mobilnya menuruni bukit .
sumber
python3-dev
bukanpython-dev
.python-dev
tampaknyapython2
.sudo apt-get
? Itu tidak masuk akal.sudo apt-get
menangani pengunduhan kode yang sudah dikompilasi, jadi mengapa Anda mengunduh kode dan kemudian tidak menggunakannya?sudo
pernyataan menginstal prasyarat untuk membangun kode sumber yang Anda unduh. yang./configure
danmake
barang-barang membutuhkan hal-hal yang akan diinstal.Jika Anda menggunakan pyenv dan mendapatkan kesalahan "Tidak ada modul bernama '_ctypes'" (seperti saya) di Debian / Raspbian / Ubuntu, Anda perlu menjalankan perintah ini:
Gunakan versi python Anda, bukan 3.7.6
sumber
pyenv
agar benar-benar berfungsi. Menggunakan pyenv jauh lebih mudah daripada mengambil kode sumber dan melakukan semuamake
hal dengan pasti.Langkah-langkah terperinci untuk menginstal Python 3.7 di CentOS atau mesin redhat linux:
sumber
Pikir saya akan menambahkan instalasi Centos:
Periksa versi python:
python3 -V
Buat virtualenv:
virtualenv -p python3 venv
sumber
Saya mengalami error ini ketika saya mencoba untuk menginstal Python 3.7.3 di Ubuntu 18.04 dengan perintah selanjutnya:
$ pyenv install 3.7.3
. Pemasangan berhasil setelah berjalan$ sudo apt-get update && sudo apt-get install libffi-dev
(seperti yang disarankan di sini ). Masalahnya terpecahkan di sana .sumber
Tidak ada solusi yang berhasil. Anda harus mengkompilasi ulang python Anda lagi; setelah semua paket yang dibutuhkan terinstal sepenuhnya.
Ikuti ini:
./configure --enable-optimizations
https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be
sumber
Lihat utas ini , untuk instalasi libffi yang disesuaikan, sulit bagi Python3.7 untuk menemukan lokasi perpustakaan libffi. Metode alternatif adalah mengatur
CONFIGURE_LDFLAGS
variabel di Makefile, misalnyaCONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"
.sumber
Solusi saya: Menginstal libffi-dev dengan apt-get tidak membantu. Tetapi ini membantu: Menginstal libffi dari sumber dan kemudian menginstal Python 3.8 dari sumber.
Konfigurasi saya: Ubuntu 16.04 LTS Python 3.8.2
Selangkah demi selangkah:
Saya mendapat pesan galat "ModuleNotFoundError: Tidak ada modul bernama '_ctypes'" saat memulai debugger dari Visual Studio Code, dan saat menjalankan
python3 -c "import sklearn; sklearn.show_versions()"
.sudo apt-get install libtool
File README.md dari libffi menyebutkan bahwa autoconf dan automake juga diperlukan. Mereka sudah terinstal di sistem saya../configure --disable-docs
make check
sudo make install
./configure
make
make test
make install
Setelah itu instalasi python saya bisa menemukan _ctypes.
sumber
Ini memecahkan kesalahan yang sama untuk saya di Debian :
dan kompilasi lagi
Referensi: issue31652
sumber
Jika Anda tidak keberatan menggunakan Miniconda , pustaka eksternal dan _ctypes yang diperlukan diinstal secara default. Itu memang membutuhkan lebih banyak ruang dan mungkin perlu menggunakan versi Python yang agak lebih tua (misalnya 3.7.6 daripada 3.8.2 pada tulisan ini).
sumber
Anda harus memuat modul php3 (Python3) yang hilang dari manajer paket. Jika Anda memiliki Ubuntu, saya merekomendasikan
Synaptic Package Manager
:Di sana Anda cukup mencari modul yang hilang. cari ctypes dan instal semua paket. Lalu pergi ke dir Python Anda dan lakukan
Ini seharusnya menyelesaikan masalah Anda.
sumber
Saya mengalami masalah yang sama. Tidak ada solusi di atas yang berhasil untuk saya. Tantangan utamanya adalah saya tidak memiliki akses root. Jadi, saya unduh dulu sumber libffi. Lalu saya kompilasi dengan perintah biasa:
Kemudian saya mengkompilasi ulang python menggunakan
Dalam kasus saya, 'home / user123 / Softwares / library / libffi / installation / lib64' adalah jalur ke direktori instalasi LIBFFI tempat libffi.so berada. Dan, / home / user123 / Softwares / Python / installation3 / adalah jalur ke direktori instalasi Python. Ubah sesuai kasus Anda.
sumber
Jika Anda melakukan sesuatu, tidak ada orang di sini yang akan mendengarkan Anda karena "Anda melakukannya dengan cara yang salah", tetapi Anda harus melakukannya "dengan cara yang salah" karena alasan yang terlalu konyol (misalnya, dalam kasus saya, hal itu dengan cepat berubah menjadi busuk kata-kata tentang seseorang di tim pengembang ibu kelebihan berat badan), Anda harus terlebih dahulu:
Dapatkan libffi dan instal ke area instal pengguna Anda seperti biasa.
Kemudian kembali ke sumber Python 3 Anda dan temukan bagian kode ini di setup.py di tingkat atas direktori sumber python
dan tambahkan baris yang telah saya tandai di atas dengan komentar. Mengapa itu perlu, dan mengapa tidak ada cara untuk mendapatkan konfigurasi untuk menghormati '--tanpa-sistem-ffi` pada platform Linux, mungkin saya akan mencari tahu mengapa itu "tidak didukung" dalam beberapa jam ke depan, tetapi semuanya telah bekerja sejak itu. Jika tidak, semoga sukses ... YMMV.
APA YANG DILAKUKAN: hanya menimpa logika di sana dan menyebabkan perintah penghubung kompilator menambahkan "-lffi" yang memang dibutuhkannya. Jika Anda memiliki pustaka yang diinstal pengguna, itu mungkin mendeteksi header dengan baik selama Anda
PKG_CONFIG_PATH
menyertakannyapath/to/your/install/root/lib/pkgconfig
.sumber