Bunu yapmanın birçok, çok, çok, çok, çok, çok, çok yolu vardır. Her birinin arkasındaki prensipleri gözden geçireceğim ve kullanım durumu.
1. Bir python ortamı
Bunu yapmanın birçok yolu var. pipenv
, conda, requirments.txt
vb.
Bunlardan bazılarıyla python sürümlerini belirleyebilirsiniz. Diğerleri ile birlikte çalıştığını bildiğiniz bir dizi python sürümünü belirtin - örneğin, python 3.7 kullanıyorsanız, 3.6'yı desteklememesi olası değildir; sadece bir veya iki küçük değişiklik var. 3.8 de çalışmalıdır.
Başka bir benzer yöntem setup.py
. Bunlar genellikle içe aktarma / komut satırı kullanımı için PyInstaller (aşağıda bahsedeceğim başka bir çözüm) veya numpy veya wxPython veya PyQt5 vb. Gibi kitaplıkları dağıtmak için kullanılır. Python paketleme kılavuzu oldukça kullanışlıdır ve orada bir sürü öğretici vardır. (google python setup.py tutorial
) Bu dosyalarda da gereksinimler belirleyebilirsiniz.
2. Bir kap
Docker büyük olanı. Eğer duymadıysan, şaşıracağım. Bir özet Hızlı google ile geliyor bu ben bir kısmını teklif edeceğiz, hangi:
Peki neden herkes kapları ve Docker'ı seviyor? Daha önce Parallels'in sunucu sanallaştırma CTO'su ve önde gelen Linux çekirdek geliştiricisi olan James Bottomley, Hyper-V, KVM ve Xen gibi VM hipervizörlerinin hepsinin "sanal donanımı taklit etmeye dayalı olduğunu" açıkladı. sistem gereksinimleri."
Ancak kapsayıcılar paylaşılan işletim sistemleri kullanır. Bu, sistem kaynağı açısından hipervizörlerden çok daha verimli oldukları anlamına gelir. Donanımı sanallaştırmak yerine, kapsayıcılar tek bir Linux örneğinin üstünde durur. Bu, "% 99,9 oranında gereksiz önemsiz VM önemsizliğini geride bırakıp sizi uygulamanızı içeren küçük, temiz bir kapsülle bırakabileceğiniz" anlamına gelir.
Bu sizin için özetlemelidir. (Kapsayıcılar için belirli bir işletim sistemine ihtiyacınız olmadığını unutmayın.)
3. Yürütülebilir bir dosya
Yazarken bunu yapan 2 ana araç vardır. PyInstaller ve cx_Freeze. Her ikisi de aktif olarak geliştirildi. Her ikisi de açık kaynak.
Komut dosyanızı alırsınız ve araç onu bayt kodla derler, içe aktarmaları bulur, kopyalar ve son kullanıcının python'a ihtiyaç duymadan komut dosyanızı hedef sistemde çalıştıran taşınabilir bir python ortamı oluşturur.
Şahsen, PyInstaller'ı tercih ediyorum - geliştiricilerden biriyim. PyInstaller tüm işlevlerini bir komut satırı komut dosyası aracılığıyla sağlar ve aklınıza gelebilecek çoğu kütüphaneyi destekler - ve daha fazlasını desteklemek için genişletilebilir. cx_Freeze bir kurulum betiği gerektirir.
Her iki araç da windows, Linux, macOS ve daha fazlasını destekler. PyInstaller tek dosya exes veya bir klasör paketi oluşturabilir, cx_Freeze ise sadece bir klasör paketini destekler. PyInstaller 3.6, python 2.7 ve 3.5-3.7'yi destekler - ancak 4.0 , python 2'yi desteklemez. Cx_Freeze, son büyük sürümden (6.0 sanırım) python 2 desteğini düşürdü.
Her neyse, araçların özellikleri hakkında yeterli; bunlara kendiniz bakabilirsiniz. (Daha fazla bilgi için https://pyinstaller.org ve https://cx-freeze.readthedocs.io adresine bakın )
Bu dağıtım yöntemini kullanırken, GitHub deposunda genellikle kaynak kodu, indirilmeye hazır birkaç exes (her platform için bir tane) ve kodun yürütülebilir bir dosyada nasıl oluşturulacağına ilişkin talimatlar sağlarsınız.