Saya telah membuat skrip Python untuk tugas-tugas sederhana di tempat kerja dan tidak pernah repot-repot mengemasnya untuk digunakan orang lain. Sekarang saya telah ditugaskan untuk membuat pembungkus Python untuk API REST. Saya sama sekali tidak tahu bagaimana memulai dan saya butuh bantuan.
Apa yang saya punya:
(Hanya ingin sespesifik mungkin) Saya sudah siapkan virtualenv , itu juga di github , file .gitignore untuk python juga ada, ditambah, perpustakaan permintaan untuk berinteraksi dengan REST API. Itu dia.
Berikut pohon direktori saat ini
.
├── bin
│ └── /the usual stuff/
├── include
│ └── /the usual stuff/
├── lib
│ └── python2.7
│ └── /the usual stuff/
├── local
│ └── /the usual stuff/
└── README.md
27 directories, 280 files
Saya bahkan tidak tahu di mana harus meletakkan file .py, jika saya pernah membuatnya.
Apa yang ingin saya lakukan:
Buat modul python dapat diinstal dengan "pip install ..."
Jika memungkinkan, saya ingin proses langkah demi langkah umum dalam menulis modul Python.
sumber
Jawaban:
Modul adalah file yang berisi definisi dan pernyataan Python. Nama file adalah nama modul dengan akhiran
.py
buat
hello.py
lalu tulis fungsi berikut sebagai isinya:Kemudian Anda dapat mengimpor
hello
:Untuk mengelompokkan banyak
.py
file, masukkan ke dalam folder. Folder apa pun dengan__init__.py
dianggap sebagai modul oleh python dan Anda dapat memanggil mereka sebuah paketAnda dapat melanjutkan dengan pernyataan impor pada modul Anda dengan cara biasa.
Untuk informasi lebih lanjut, lihat 6.4. Paket .
sumber
Python 3 - DIPERBARUI 18 November 2015
Menemukan jawaban yang diterima bermanfaat, namun ingin memperluas beberapa poin untuk kepentingan orang lain berdasarkan pengalaman saya sendiri.
Modul: Modul adalah file yang berisi definisi dan pernyataan Python. Nama file adalah nama modul dengan akhiran .py ditambahkan.
Modul Contoh : Asumsikan kita memiliki skrip python tunggal dalam direktori saat ini, di sini saya menyebutnya mymodule.py
File mymodule.py berisi kode berikut:
Jika kita menjalankan interpreter python3 dari direktori saat ini, kita dapat mengimpor dan menjalankan fungsi myfunc dengan cara-cara berbeda berikut (Anda biasanya hanya memilih salah satu dari yang berikut):
Ok, jadi itu cukup mudah.
Sekarang anggap Anda memiliki kebutuhan untuk meletakkan modul ini ke folder khusus untuk menyediakan ruang nama modul, bukan hanya menjalankannya ad-hoc dari direktori kerja saat ini. Di sinilah ada baiknya menjelaskan konsep suatu paket .
Paket : Paket adalah cara penataan namespace modul Python dengan menggunakan "dotted module names". Sebagai contoh, nama modul AB menunjuk sebuah submodule bernama B dalam paket bernama A. Sama seperti penggunaan modul menyelamatkan penulis modul yang berbeda dari harus khawatir tentang nama variabel global masing-masing, penggunaan nama modul bertitik menyimpan penulis paket multi-modul seperti NumPy atau Python Imaging Library karena harus khawatir tentang nama modul masing-masing.
Paket Contoh : Sekarang mari kita asumsikan kita memiliki folder dan file berikut. Di sini, mymodule.py identik dengan sebelumnya, dan __init__.py adalah file kosong:
File __init__.py diperlukan untuk membuat Python memperlakukan direktori sebagai berisi paket. Untuk informasi lebih lanjut, silakan lihat tautan dokumentasi Modul yang disediakan nanti.
Direktori kerja kami saat ini adalah satu tingkat di atas folder biasa yang disebut mypackage
Jika kita menjalankan interpreter python3 sekarang, kita dapat mengimpor dan menjalankan modul mymodule.py yang berisi fungsi myfunc yang diperlukan dengan cara yang berbeda berikut (Anda biasanya hanya memilih salah satu dari yang berikut):
Dengan asumsi Python 3, ada dokumentasi yang sangat baik di: Modul
Dalam hal konvensi penamaan untuk paket dan modul, pedoman umum diberikan dalam PEP-0008 - silakan lihat Nama Paket dan Modul
Modul harus memiliki nama pendek, semua huruf kecil. Garis bawah dapat digunakan dalam nama modul jika itu meningkatkan keterbacaan. Paket-paket python juga harus memiliki nama-nama kecil, huruf kecil semua, meskipun penggunaan garis bawah tidak disarankan.
sumber
import mypackage
. Jika Anda ingin mengimpor hanya fungsi dari modul (bahkan file) lebih baik digunakanfrom module import function
. Dalam kasus subfolderfrom subfolder.module import function
sehingga Anda dapat memanggilfunction()
tanpa memecat bagian kode lainnya. Juga, jangan gunakanfrom module import *
jika Anda benar-benar tidak perlu.import mypackage
? Menambahkanimport mymodule
untuk__init__.py
tidak bekerja ..Karena belum ada yang meliput pertanyaan OP ini:
Ini adalah contoh minimal absolut, menunjukkan langkah-langkah dasar mempersiapkan dan mengunggah paket Anda ke PyPI menggunakan
setuptools
dantwine
.Ini sama sekali bukan pengganti untuk membaca setidaknya tutorial , ada lebih dari itu tercakup dalam contoh yang sangat mendasar ini.
Membuat paket itu sendiri sudah tercakup oleh jawaban lain di sini, jadi mari kita asumsikan kita sudah membahas langkah itu dan struktur proyek kita seperti ini:
Agar dapat digunakan
setuptools
untuk kemasan, kita perlu menambahkan filesetup.py
, ini masuk ke folder root dari proyek kami:Minimal, kami menentukan metadata untuk paket kami,
setup.py
akan terlihat seperti ini:Karena kami telah menetapkan
license='MIT'
, kami menyertakan salinan dalam proyek kami sebagaiLICENCE.txt
, di samping file readme di reStructuredText sebagaiREADME.rst
:Pada titik ini, kami siap untuk mulai menggunakan kemasan
setuptools
, jika kami belum menginstalnya, kami dapat menginstalnya denganpip
:Untuk melakukan itu dan membuat
source distribution
, di folder root proyek kami, kami memanggil kamisetup.py
dari baris perintah, menentukan kami inginsdist
:Ini akan membuat paket distribusi dan info telur kami, dan menghasilkan struktur folder seperti ini, dengan paket kami di
dist
:Pada titik ini, kami memiliki paket yang dapat kami instal menggunakan
pip
, jadi dari root proyek kami (dengan asumsi Anda memiliki semua penamaan seperti dalam contoh ini):Jika semuanya berjalan dengan baik, kita sekarang dapat membuka juru bahasa Python, saya akan mengatakan di suatu tempat di luar direktori proyek kami untuk menghindari kebingungan, dan mencoba menggunakan paket baru mengkilap kami:
Sekarang kami telah mengkonfirmasi paket menginstal dan berfungsi, kami dapat mengunggahnya ke PyPI.
Karena kami tidak ingin mencemari repositori langsung dengan eksperimen kami, kami membuat akun untuk repositori pengujian , dan menginstal
twine
untuk proses unggah:Sekarang kita hampir sampai, dengan akun kita dibuat, kita hanya mengatakan
twine
untuk mengunggah paket kita, itu akan meminta kredensial kita dan mengunggah paket kita ke repositori yang ditentukan:Kami sekarang dapat masuk ke akun kami di repositori tes PyPI dan mengagumi paket kami yang baru diunggah untuk sementara waktu, dan kemudian mengambilnya menggunakan
pip
:Seperti yang bisa kita lihat, proses dasarnya tidak terlalu rumit. Seperti yang saya katakan sebelumnya, ada banyak lebih dari yang dibahas di sini, jadi silakan baca tutorial untuk penjelasan lebih mendalam.
sumber
setuptools
?twine
, tetapi Anda dapat menguji paket Anda secara lokal sebelum diterbitkan setelah Anda membuatnyasetuptools
.Setelah Anda menentukan perintah yang Anda pilih, Anda dapat menarik dan melepas file yang disimpan ke folder Lib di file program python Anda.
sumber
Buat file dengan nama "hello.py"
Jika Anda menggunakan Python 2.x
Jika Anda menggunakan Python 3.x
Jalankan file. Kemudian, Anda dapat mencoba yang berikut ini:
Jika Anda ingin sedikit keras, Anda dapat menggunakan yang berikut:
Jika Anda menggunakan Python 2.x
Jika Anda menggunakan Python 3.x
Lihat yang ada di tanda kurung di samping define? Itu penting. Ini adalah salah satu yang dapat Anda gunakan di dalam define.
Teks - Anda dapat menggunakannya saat Anda ingin program mengatakan apa yang Anda inginkan. Menurut namanya, itu adalah teks. Saya harap Anda tahu apa artinya teks. Itu berarti "kata-kata" atau "kalimat".
Jalankan file. Kemudian, Anda bisa mencoba yang berikut jika Anda menggunakan Python 3.x:
Untuk Python 2.x - Saya kira hal yang sama dengan Python 3? Tidak ada ide. Perbaiki saya jika saya membuat kesalahan pada Python 2.x (Saya tahu Python 2 tetapi saya terbiasa dengan Python 3)
sumber
Saya membuat proyek untuk dengan mudah memulai kerangka proyek dari awal . https://github.com/MacHu-GWU/pygitrepo-project .
Dan Anda dapat membuat proyek uji, katakanlah
learn_creating_py_package
,.Anda dapat mempelajari komponen apa yang harus Anda miliki untuk tujuan yang berbeda seperti :
Keuntungan menggunakan
pygitrepo
adalah bahwa mereka membosankan secara otomatis dibuat sendiri dan beradaptasi Andapackage_name
,project_name
,github_account
,document host service
,windows or macos or linux
.Ini adalah tempat yang bagus untuk belajar mengembangkan proyek python seperti pro.
Semoga ini bisa membantu.
Terima kasih.
sumber