Bir Python uygulaması oluşturuyorum ve müşterilerimi Python ve modülleri yüklemeye zorlamak istemiyorum.
Peki, bir Python betiğini bağımsız bir yürütülebilir dosya olarak derlemenin bir yolu var mı?
Bir Python uygulaması oluşturuyorum ve müşterilerimi Python ve modülleri yüklemeye zorlamak istemiyorum.
Peki, bir Python betiğini bağımsız bir yürütülebilir dosya olarak derlemenin bir yolu var mı?
Yanıtlar:
Sen kullanabilirsiniz py2exe'yi zaten yanıtladı ve kullanım olarak Cython anahtar dönüştürmek için .py
dosyaları .pyc
gibi, C derlenmiş dosyalar, .dll
Windows ve .so
ortak daha dönmek çok zor, linux .pyo
ve .pyc
dosyaları (kazanç performansı da ve!)
Python programlarını bağımsız yürütülebilir dosyalar olarak paketlemek için PyInstaller'ı kullanabilirsiniz . Windows, Linux ve Mac üzerinde çalışır.
PyInstaller Hızlı Başlangıç
PyInstaller'ı PyPI'den yükleyin:
pip install pyinstaller
Programınızın dizinine gidin ve çalıştırın:
pyinstaller yourprogram.py
Bu, paketi adlı bir alt dizinde oluşturur
dist
.Daha ayrıntılı bir izlenim için kılavuza bakınız .
Nuitka'yı araştırmak isteyebilirsiniz . Python kaynak kodunu alır ve C ++ API çağrılarına dönüştürür. Daha sonra yürütülebilir bir ikili dosyaya derler (Linux'ta ELF). Birkaç yıldır piyasada ve çok çeşitli Python versiyonlarını destekliyor.
Kullanırsanız muhtemelen bir performans artışı elde edersiniz. Önerilen.
Python 2.7 kullanarak pencerelerde bağımsız dosyalar oluşturma hakkında bazı yararlı bilgiler derlemek istiyorum.
Py2exe kullandım ve işe yarıyor, ama bazı problemlerim vardı.
Windows 64 bitlerinde tek dosyalar oluşturmak için bazı sorunlar göstermiştir: pyle.exe ile bundle_files = 1 kullanımı çalışmıyor ;
Çalışması için bir setup.py dosyası oluşturmak gerekir. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
Kurulum dosyasındaki paketleri içe aktararak çözmeniz gereken bağımlılıklarla ilgili sorunlar yaşadım;
PyQt ile birlikte çalışmasını sağlayamadım.
Bu son sebep beni PyInstaller http://www.pyinstaller.org/ denememe neden oldu .
Bence çok daha iyi çünkü:
Aşağıdaki satırları içeren bir .bat dosyası oluşturmanızı öneririm (pyinstaller.exe dosyası Windows Yolunda olmalıdır):
pyinstaller.exe --onefile MyCode.py
Diğer seçeneklerin yanı sıra tek bir dosya da oluşturabilirsiniz ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
: Ben PyInstaller kullanarak ve bu tarifi kullanarak çözüldü paketi çoklu işlem yalnızca bir sorun vardı https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Yani, en azından python 2.7 için, daha iyi ve daha basit bir seçenek PyInstaller olduğunu düşünüyorum.
--onefile
Yürütülebilir hala ile bağlantıya istediği için bayrak, Windows üzerinde taşınabilir hale getirmek için yardımcı olmayacaktır api-ms-win-crt-runtime-l1-1-0.dll
yoluyla kurulmalıdır kütüphanede (veya / ve diğerleri) vcredist
paketin. Bu yüzden hala bir bağımlılık var ve çalıştırmadan önce kurulması gerekiyor.
Evet, Python komut dosyalarını bağımsız yürütülebilir dosyaya derlemek mümkündür.
PyInstaller , Python programlarını Windows , Linux , Mac OS X , FreeBSD , Solaris ve AIX altında bağımsız yürütülebilir dosyalara dönüştürmek için kullanılabilir . Önerilen dönüştürücülerden biridir.
py2exe , Python komut dosyalarını yalnızca Windows platformunda yürütülebilir dosyaya dönüştürür.
Cython , hem Python programlama dili hem de genişletilmiş Cython programlama dili için statik bir derleyicidir.
Ve üçüncü bir seçenek cx_Freeze
, çapraz platform.
cx_Freeze
Şubat'ındayız ve 2017'nin sonundan beri pypi'de listelenen bir sürüm yok . Bu proje terk edildi mi?
py2exe gibi olabilir . ayrıca linux'ta yaptığınız bilgileri de bulacaksınız
Py2exe kullanın .... aşağıdaki kurulum dosyalarını kullanın:
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=['PlotMemInfo.py'],
options={
'py2exe': {
'packages' : ['matplotlib'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
Gibi pyinstaller - özellikle "pencereli" varyant:
pyinstaller --onefile --windowed myscript.py
Bir dist / klasöründe tek bir * .exe dosyası oluşturur.
Ayrıca
python 2.3 - 2.7 gibi daha iyi geriye dönük uyumluluk için pyinstaller'ı öneriyorum .
için py2exe , sen piton 2.6 olması gerekir
Python 3.2 komut dosyaları için tek seçenek Cxfreeze'dir. Kaynaklardan oluşturun, aksi takdirde çalışmaz.
Python 2.x için kütüphaneleri de çıktısı CxFreeze aksine, tek bir çalıştırılabilir bir python paketi olabilir gibi pyinstaller öneririz.
py2exe istediğiniz exe dosyasını yapacak, ancak yeni exe'nizi kullanacağınız makinede aynı MSVCR90.dll sürümüne sahip olmanız gerekir. Daha fazla bilgi için http://www.py2exe.org/index.cgi/Tutorial adresine bakın .
@ Https://wiki.python.org/moin/DistributionUtilities adresinde listelenen dağıtım yardımcı programlarının listesini bulabilirsiniz .
Ben bbfreeze kullanın ve çok iyi çalışıyor (henüz python 3 destek olsa da).
.so
dosyaya derleyecek veya .egg dosyalarını doğrudan kopyalayacak ve hepsi tek bir dizinde (veya tek bir dosya olarak) bulunacaktır. Kurulum gerekmez.
Pyinstaller kullanarak, yapmak yerine .exe kısayolunu kullanarak daha iyi bir yöntem buldum --onefile
. Her neyse, muhtemelen bazı veri dosyaları var ve site tabanlı bir uygulama çalıştırıyorsanız, programınız html, js, css dosyalarına da bağlıdır. Tüm bu dosyaları bir yere taşımanın bir anlamı yok .. bunun yerine çalışma yolunu yukarı hareket ettirirsek.
Exe için bir kısayol yapın, üste taşıyın ve hedef ve başlangıç yollarını belirtildiği gibi ayarlayın, göreli yolların dist \ klasörüne
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe
Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
geçmesini
sağlayın: "GTFS-Manager" olarak yeniden adlandırılan herhangi bir şeye kısayolu yeniden adlandırabilir miyim? - kısayolu tıklayın, sanki dosyayı python çalıştırdım! Bu yaklaşımı şu yaklaşımdan daha iyi buldum --onefile
:
Oh, inşa ettikten sonra yapı klasörünü silmeyi unutmayın, boyuttan tasarruf edersiniz.
Ct dönüştürmek için Cython kullanın, derlemek ve gcc ile bağlantı. Bir diğeri, c'deki temel işlevleri yapmak (tersine çevirmek zor olanları) yapmak, derlemek ve derlenmiş kodu içe aktarmak için python boost kullanmak olabilir (ayrıca çok daha hızlı bir kod yürütme elde edersiniz). sonra dağıtmak için belirtilen herhangi bir aracı kullanın.
Bana PyRun, https://www.egenix.com/products/python/PyRun/ 'un da bir seçenek olduğu söylendi .