Python yumurta dosyası nasıl oluşturulur


91

Python'daki yumurta dosyaları hakkında sorularım var.

Pakete göre düzenlenmiş çok fazla Python kodum var ve yumurta dosyaları oluşturmaya çalışıyorum. İzlediğim talimatları , ancak çok yaygındır.

Buna göre bir setup.py dosyasına ihtiyacım var gibi görünüyor.

  1. Lütfen setup.py dosyasına neyi koymam gerektiğini ve nerede bulunması gerektiğini söyler misiniz?
  2. Yumurta dosyasını almak için setup.py'yi oluşturmak ve ardından "setup.py bdist_egg" dosyasını başlatmak yeterli olacaktır. Lütfen doğrulayabilir misiniz?
  3. Yumurta dosyasına sadece .pyc dosyalarını eklemek mümkün müdür?
  4. .Egg dosyasına sahip olmak, kodu paketten çıkarmadan nasıl başlatabilirim java -jar <jar file>?

O halde yumurta yerine ne kullanmalıyım? İşte yumurta stackoverflow.com/questions/14902732/… ile
Green

@YauhenYakimovich: bu bağlantı artık park edilmiş bir spam alanı. Belki değerinde düzenleme kullanmak packaging.python.org/en/latest/wheel_egg ?
Chris Adams

Yanıtlar:


74

Yanlış dokümantasyonu okuyorsunuz. Bunu istiyorsunuz: https://setuptools.readthedocs.io/en/latest/setuptools.html#develop-deploy-the-project-source-in-development-mode

  1. Setup.py'yi oluşturma, Python'un buradaki standart kitaplık belgelerinde bulunan distutils belgelerinde anlatılmıştır . (Piton yumurta) temel fark sensin import setupdan setuptoolsdeğil, distutils.

  2. Evet. Bu doğru olmalı.

  3. Ben öyle düşünmüyorum. pycdosyalar sürüme ve platforma bağlı olabilir. Yumurtayı açabilirsiniz (bunlar sadece zip dosyaları olmalıdır) ve .pydosyaları bırakan .pycdosyaları silebilirsiniz , ancak bu tavsiye edilmez.

  4. Emin değilim. Bu, "Geliştirme Modu" olabilir. Yoksa "py2exe" veya "py2app" modunu mu arıyorsunuz?


51
+1: .pyc dosyalarını asla dahil etmeyin. Tamamen kafa karıştırıyorlar. Windows .pyc dosyalarını yanlışlıkla bir linux kutusuna kopyaladık ve şimdiye kadarki en kafa karıştırıcı hata izleme mesajlarını aldık. Çünkü orijinal Windows dosya adlarının bulunduğu dosya adları. Üretim sunucusunda bu pencere dosya adlarını görmek korkutucuydu.
S.Lott

sadece pyinstaller kullanın
Nickpick

30

# 4 için, java'yı uygulamanız için bir jar dosyasıyla başlatmaya en yakın şey Python 2.6'daki yeni bir özellik, çalıştırılabilir zip dosyaları ve dizinlerdir .

python myapp.zip

Uygulamam.zip, __main__.pyyürütülecek komut dosyası olarak çalıştırılan bir dosyayı içeren bir zip dosyasıdır. Paket bağımlılıklarınız da dosyaya dahil edilebilir:

__main__.py
mypackage/__init__.py
mypackage/someliblibfile.py

Ayrıca bir yumurta da çalıştırabilirsiniz, ancak büyü o kadar hoş değildir:

# Bourn Shell and derivatives (Linux/OSX/Unix)
PYTHONPATH=myapp.egg python -m myapp
rem Windows 
set PYTHONPATH=myapp.egg
python -m myapp

Bu myapp.egg dosyasını Python yoluna koyar ve bir modülü çalıştırmak için -m argümanını kullanır. Myapp.egg dosyanız büyük olasılıkla şuna benzer:

myapp/__init__.py
myapp/somelibfile.py

Ve python çalışacaktır __init__.py( __file__=='__main__'komut satırı kullanımı için uygulamanızda bunu kontrol etmelisiniz ).

Yumurta dosyaları sadece zip dosyalarıdır, böylece __main__.pyyumurtanıza bir zip aracıyla ekleyebilir ve onu python 2.6'da çalıştırılabilir hale getirebilir python myapp.eggve PYTHONPATH ortam değişkeninin ayarlandığı yukarıdaki büyülü sözler yerine çalıştırabilirsiniz .

Bir ile bunları doğrudan çalıştırılabilir nasıl dahil yürütülebilir zip dosyaları hakkında daha fazla bilgi shebang bulunabilir konudaki Michael Foord blog yayınını .



10

Bence dağıtım için artık yumurta yerine python çarkları kullanmalısın .

Tekerlekler yeni python dağıtım standardıdır ve yumurtaların yerini alması amaçlanmıştır. Destek, pip> = 1.4 ve kurulum araçları> = 0.8 olarak sunulur.


2
Anladığım kadarıyla tekerleği ithal edemezsin. Bazen senaryomu daha taşınabilir hale getirmek için bir yumurta ile birlikte yerleştirmek istiyorum.
Gillespie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.