Saya mencoba membangun perpustakaan bersama menggunakan file ekstensi C tetapi pertama-tama saya harus menghasilkan file output menggunakan perintah di bawah ini:
gcc -Wall utilsmodule.c -o Utilc
Setelah menjalankan perintah, saya mendapatkan pesan kesalahan ini:
utilsmodule.c: 1: 20: kesalahan fatal: Python.h: Tidak ada kompilasi file atau direktori yang dihentikan.
Saya telah mencoba semua solusi yang disarankan melalui internet tetapi masalahnya masih ada. Saya tidak punya masalah dengan Python.h
. Saya berhasil menemukan file di mesin saya.
sumber
locate Python.h
dan lihat apakah Anda sudah memiliki file sebelum Anda melakukan semua ini. Jika Anda dapat menemukan file tersebut berada, sebagian besar jawaban ini akan berfungsi: stackoverflow.com/a/19344978/4954434 (Ini mungkin hanya masalah jalur)sudo yum install python27-devel
apt-get install python3.6-dev
bekerja untuk saya.sudo apt-get install python3.6-dev
sudo apt-get install python3.7-dev
.Di Ubuntu, saya menjalankan Python 3 dan saya harus menginstal
Jika Anda ingin menggunakan versi Python yang tidak tertaut ke python3, instal paket python3.x-dev yang terkait. Sebagai contoh:
sumber
sudo apt-get install python3.4-dev
untuk Python3.4 saya dan ini memecahkan masalah saya.sudo apt-get install python2.7-dev
memperbaiki masalahpython3-dev
akan menginstal dependensi untuk versi yang dikaitkan denganpython3
perintah. Jadi, jika Anda ingin menginstal untuk versi tertentu, gunakan versi lengkap seperti -python3.x-dev
.sudo apt-get install python3.6-dev
Untuk Python 3.7 dan Ubuntu khususnya, saya perlu
sudo apt install libpython3.7-dev
. Saya pikir pada beberapa titik nama diubah dari
pythonm.n-dev
ini.untuk Python 3.6, sama:
sudo apt install libpython3.6-dev
sumber
sudo apt install libpython3.6-dev
Dua hal yang harus Anda lakukan.
Instal paket pengembangan untuk Python, dalam hal Debian / Ubuntu / Mint itu dilakukan dengan perintah:
Hal kedua adalah bahwa menyertakan file tidak secara default di path include, juga tidak perpustakaan Python terkait dengan dieksekusi secara default. Anda perlu menambahkan flag-flag ini (ganti versi Python yang sesuai):
Dengan kata lain perintah kompilasi Anda seharusnya:
sumber
pkg-config
bukannya baku-I
: stackoverflow.com/a/21531170/895245Jika Anda menggunakan Raspberry Pi:
sumber
di Fedora jalankan ini untuk Python 2:
dan untuk Python 3:
sumber
apt-get install python-dev
.Jika Anda menggunakan tox untuk menjalankan tes pada beberapa versi Python, Anda mungkin perlu menginstal pustaka Python dev untuk setiap versi Python yang Anda uji.
sumber
Solusi untuk Cygwin
Anda perlu menginstal paket
python2-devel
ataupython3-devel
, tergantung pada versi Python yang Anda gunakan.Anda dapat menginstalnya dengan cepat menggunakan 32-bit atau 64-bit
setup.exe
(tergantung pada instalasi Anda) dari Cygwin.com .Contoh (modifikasi
setup.exe
nama file dan versi utama Python jika perlu):Anda juga dapat memeriksa jawaban saya yang lain untuk beberapa opsi lagi untuk menginstal paket Cygwin dari baris perintah.
sumber
Dalam AWS API (centOS) nya
sumber
pip install cryptography
pada contoh linux amazon.Bagi saya, mengubahnya menjadi ini berfungsi:
Saya menemukan file tersebut
/usr/include/python2.7/Python.h
, dan karena/usr/include
sudah ada di path include, makapython2.7/Python.h
sudah cukup.Anda juga bisa menambahkan jalur sertakan dari baris perintah sebagai gantinya -
gcc -I/usr/lib/python2.7
(terima kasih @ erm3nda).sumber
gcc -I/usr/lib/python2.7 etc
daripada hardcode termasuk panggilan.Pastikan bahwa file dev Python datang dengan OS Anda.
Anda seharusnya tidak membuat kode pustaka dan menyertakan path. Sebagai gantinya, gunakan pkg-config, yang akan menampilkan opsi yang benar untuk sistem spesifik Anda:
Anda dapat menambahkannya ke baris gcc Anda :
sumber
Instalasi AWS EC2 menjalankan python34:
sudo yum install python34-devel
sumber
Dalam kasus saya, apa yang diperbaiki di Ubuntu adalah menginstal paket
libpython-all-dev
(ataulibpython3-all-dev
jika Anda menggunakan Python 3).sumber
python-all-dev
dalam kasus saya, tetapi cukup dekat.Jika Anda menggunakan virtualenv dengan 3,6 python (edge sekarang), pastikan untuk menginstal python 3.6 dev yang cocok
sudo apt-get install python3.6-dev
, jika tidak mengeksekusisudo python3-dev
akan menginstal python dev 3.3.3-1, yang tidak akan menyelesaikan masalah.sumber
Ini bukan situasi yang sama, tetapi juga berfungsi untuk saya dan sekarang saya dapat menggunakan SWIG dengan Python3.5 :
Saya mencoba mengkompilasi:
Dengan Python 2.7 berfungsi dengan baik, tidak dengan versi 3.5 saya:
Setelah dijalankan di instalasi Ubuntu 16.04 saya:
Sekarang saya dapat mengkompilasi tanpa masalah Python3.5:
sumber
Saya juga mengalami kesalahan ini ketika saya menginstal coolprop di ubuntu.
Untuk ubuntu 16.04 dengan python 3.6
Jika ini tidak berhasil cobalah menginstal / memperbarui
gcc
lib.sumber
python3-dev
berkali-kali dan terus mendapatkan kesalahan yang sama, tetapi tidak tahu tentangpython3.6-dev
!! Terima kasih!!coba apt-file. Sulit untuk mengingat nama paket tempat file yang hilang berada. Ini generik dan berguna untuk semua file paket.
Sebagai contoh:
Sekarang Anda dapat membuat tebakan ahli untuk memilih yang mana.
sumber
Saya berhasil memecahkan masalah ini dan menghasilkan file .so dalam satu perintah
sumber
Untuk kawan-kawan OpenSuse di luar sana:
sumber
Untuk CentOS 7:
Saya mengikuti petunjuk di sini untuk menginstal python3.6 di beberapa VM: https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-up-a-local-programming- environment-on-centos-7 dan kemudian dapat membangun mod_wsgi dan membuatnya bekerja dengan virtualenv python3.6
sumber
Jika Anda menggunakan Python 3.6 di Amazon Linux (berdasarkan RHEL, tetapi jawaban RHEL yang diberikan di sini tidak berfungsi):
sumber
Kesalahan ini terjadi ketika saya mencoba menginstal ctds pada CentOS 7 dengan Python3.6. Saya melakukan semua trik yang disebutkan di sini termasuk
yum install python34-devel
. MasalahnyaPython.h
ditemukan di/usr/include/python3.4m but not in /usr/include/python3.6m
. Saya mencoba menggunakan--global-option
titik untuk memasukkan dir (pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds
). Ini menghasilkanlpython3.6m
tidak ditemukan ketika menghubungkan ctds.Akhirnya yang berhasil adalah memperbaiki lingkungan pengembangan untuk Python3.6 perlu dikoreksi dengan include dan libs.
Python.h harus berada di jalur sertakan Anda untuk gcc. Versi python mana pun yang digunakan, misalnya jika itu 3,6, maka itu harus dalam
/usr/include/python3.6m/Python.h
biasanya.sumber
Tentu
python-dev
ataulibpython-all-dev
hal pertama yang (apt
)install
, tetapi jika itu tidak membantu seperti kasus saya, saya menyarankan Anda untuk menginstal paket-paket Antarmuka Fungsi asing olehsudo apt-get install libffi-dev
dansudo pip install cffi
.Ini akan membantu terutama jika Anda melihat kesalahan sebagai / dari
c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory
.sumber
Ini sering muncul ketika Anda mencoba untuk menghapus
python3.5
dan menginstalpython3.6
.Jadi ketika menggunakan
python3
(yangpython3 -V
=>python3.6
) untuk menginstal beberapa paketpython3.5
header yang diperlukan akan muncul kesalahan ini.Atasi dengan menginstal
python3.6-dev
modul.sumber
Anda harus menginstal file pengembangan Python di sistem operasi Anda jika Python yang disertakan dengan sistem operasi Anda tidak menyertainya. Banyak jawaban pada pertanyaan ini menunjukkan berbagai cara ini dapat dicapai pada sistem yang berbeda.
Ketika Anda telah melakukannya, masalahnya adalah memberitahu kompiler di mana mereka berada dan bagaimana cara mengkompilasinya. Python hadir dengan sebuah program bernama
python-config
. Untuk kompilasi, Anda memerlukan--includes
output dan untuk menghubungkan suatu program dengan pustaka Python (menanamkan Python ke program Anda)--ldflags
hasilnya. Contoh:The
python-config
program dapat dinamai versi Python - pada Debian, Ubuntu misalnya ini dapat diberi namapython3-config
ataupython3.6-config
.sumber
Terkadang bahkan setelah menginstal python-dev kesalahan tetap ada, Periksa kesalahan apakah ada 'gcc' yang hilang.
Pertama unduh seperti yang dinyatakan dalam https://stackoverflow.com/a/21530768/8687063 , lalu instal gcc
Untuk apt (Ubuntu, Debian ...):
Untuk yum (CentOS, RHEL ...):
Untuk dnf (Fedora ...):
Untuk zypper (openSUSE ...):
Untuk apk (Alpine ...):
sumber
Ini berarti bahwa
Python.h
tidak ada dalam jalur sertakan default kompiler Anda. Sudahkah Anda menginstalnya ke seluruh sistem atau lokal? Apa OS kamu?Anda bisa menggunakan
-I<path>
flag untuk menentukan direktori tambahan tempat kompiler Anda harus mencari header. Anda mungkin harus menindaklanjuti-L<path>
sehingga gcc dapat menemukan perpustakaan yang akan Anda tautkan menggunakan-l<name>
.sumber