2013-07-23 9 views
7

Ben aşağıdaki komutu çalıştırabilirsiniz:"setup.py clean" tam olarak ne yapar? sürümü 0.9.6 ile <code>setuptools</code> den <code>setup</code> bir çağrı çağırma

python setup.py clean 

Ama bu tam olarak ne yapıyor? Bu komutla ilgili yardım örneğin bu clean komutu kullanmak için bir olasılık var mı biraz seyrek ve

python setup.py clean --all 

'build/lib.linux-i686-2.7' does not exist -- can't clean it 

gibi yararsız ifadeleri verir çalışan .pyc ve .~ ile biten temizleme otomatik olarak geçici python dosyaları? Bu komutla yapılabilir mi, yapılandırılmalı mıdır ...?

+0

İlgi dışı, neden ekstra davranışı istiyorsunuz? Temiz bir dizinin olması güzel bir şey olduğunu hayal edebiliyorum, ama genel olarak rahatsız olmanız gereken bir şey değil. Herhangi bir sebep var mı? – Evert

+0

Tüm içeriğin pakete alındığı bir dizini belirtmek için ekstra davranışı istiyorum. Önce geçici python dosyalarını kaldırmadan, tüm bu geçici dosyalar paketin içinde kullanılacaktır, hayır? Ayrıca, 'clean' komutu, sahip olduğunuz şeyi açıkça görebilmek için çalışma dizinini geçici dosyalardan temizlemede kullanılabilir. – Alex

+0

Paketleme için 'setup.py sdist' işlevine bakın. Temizleme gelince: '* .pyc' dosyaları gerçekten bir problem olmamalı, ancak bulmayı düşünebilirsiniz. -name "* .pyc" Üste | xargs rm'. Bu dosyalar, Python ile alakasız bir şey değildir, çünkü bunlar Python ile ilgisizdir (bu, birkaç dosya türü için de geçerli olabilir). – Evert

cevap

6

Bildiğim kadarıyla, yalnızca Python'un derlenmesi gereken uzantılar da dahil olmak üzere tüm dosyaların yüklenmesini sağladığı build alt dizinini kaldırır.

Orada (eğer testler durumunda olabilecekler) kaynak dizindeki bazı komut üzerine Python ran sürece, başka yerde herhangi *.pyc dosyalar veya kaynak dizinden doğrudan modülleri ithal olmamalıdır. *~ dosyaları, emacs yedekleme dosyalarıdır ve bu nedenle setup.py tarafından temizlenmez. (Birinin Makefile içine kodlanmış bu sadece çünkü daha make clean ile bu davranışı gördüyseniz.)

Muhtemelen bir şekilde temiz komutu geçersiz olabilir (yinelemeli) *.pyc dosyaları kaldırmak, ancak varsa şüphe bir ihtiyaç. Genel olarak, Python, *.py dosyalarını, *.pyc dosyalarının, eğer değiştiyse yeniden derlemesine yetecek kadar akıllıdır, aksi takdirde ikincisi daha hızlı olacaktır.

Karşılaştığım bir uyarı var ve bu, setup.py build_ext --inplace yapılıyorken temizleme, derlenmiş modül (ler) ini kaldırmayacak, çünkü bunlar derleme dizininde değil. Benim için temiz komutun eksikliğini hissettiriyor.

Genel olarak, make davranışına uyması için temiz komutun eklendiği görüldü, ancak fazla eklemek mümkün görünmüyor.

+1

Lütfen diğer yorumu görün: Bir paket oluşturduğumda, önce geçici dosyalardan kurtulmak istiyorum. Paketin bir parçası olmalarını istemiyorum. – Alex

+0

Eğer 'setup.py build_ext --inplace' kullanmış olsaydım, tüm derlenmiş modülleri kaldırmanın bir yolu var mı? – Garrett

+2

@Garrett Eğer bunlar sadece saf Python modülleriyse, yorumlarda (mafsallı) öneriyi yorumlarda kullanabilirsiniz: “find -name” * pyc “-delete”. Başka dosyalar varsa (Cython veya C kaynak dosyalarından derlenmiş), işler daha kestirilir ve her dosya türü için bulma komutunu çalıştırmayı deneyebilirsiniz. – Evert

İlgili konular