2012-11-14 18 views
7

Python komut dosyasının pinghon'unu, zaten shebang (veya eğer varsa sihir numarası) olan .pyc dosyaları oluşturmasını engellemenin bir yolu var mı? ÇalışmıyorPython'u pyb dosyasından oluşturma işlemini durdurun

:

#!/usr/bin/env python -B 
+1

@VajkHermecz, hiçbir sorum kadar daha özel. –

+0

Evet, üzgünüm ilgili daha iyi bir terim olurdu ... srry –

+1

Yeniden açılmayı oylama çünkü yinelenen farklı etkileri vardır. – o11c

cevap

4

, Python programı biraz POSIX uyumlu sistemde çalışır varsayalım (/ bin/sh için) ancak ve ancak Evet, bu çalışacaktır:

( GELİŞMİŞ glglgl gelen verilere göre)

#!/bin/sh 
"exec" "python" "-B" "$0" "[email protected]" 

# The rest of the Python program follows below: 
+0

Kendine not: daha sonra http://stackoverflow.com/a/9057699/193892 ile geliştirin –

+0

Harika görünüyor! '' '' S kabuk için ve python tarafından göz ardı edilir ... – glglgl

+1

Ama o sözdizimi vurgulayarak keser ... – glglgl

3

Yazık, hayır. Shebang şeyler, bir yürütülebilir ve bir parametre vermekle sınırlıdır.

Yani env bir argüman yerine -B ile python ve iki argüman olarak geçerli dosya olarak verilen dosya ile python -B çalıştırmayı dener.

İstenen hedefe ulaşmanın bir yolunu göremiyorum.

+2

Komik bölüm, Python Windows Launcher'ın bu sınırlamayı bilmediği ve seçenekleri (un) doğru şekilde ilettiği bölümdür. Böylece bir kereliğine Python on Window daha iyi çalışır;) – lqc

6

python interperter yolunuzu env kullanmak yerine doğrudan o vuruşuna koymak mümkündür. Bu, tabii ki, env kullanmanın bazı taşınabilirlik avantajlarından mahrum kalmanız anlamına gelir. Bu sayının wikipedia Shebang page numaralı telefonunda bir tartışması var. Python'u env örneklerinden biri olarak kullanıyorlar.

4

env man sayfasına göre, ortam değişkenlerini ayarlamak için name=value geçebilir. PYTHONDONTWRITEBYTECODE ortam değişkeni, Python'un .py [co] dosyalarını (python'a göre -B bayrağı ile aynı) yazmamasına neden olur. Bu nedenle,

#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python 

numaralarını kullanmalısınız.

DÜZENLEME:

ben basit Python komut bu test:

#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python 
print 1 

sonra

$chmod +x test.py 
$./test.py 
1 
$ls 
test.py 

(ama test.pyc değil)

+1

Benim için komut sadece kilitleniyor ... –

+0

Sadece 'python -B script.py' ile çalışıyor mu? Sadece basit bir senaryoyu test ettim ve bana göre iyi çalışıyor gibi görünüyordu. – asmeurer

+1

bende. Bu işe yaramıyor. –

İlgili konular