2016-03-29 5 views
1

PATH'a eklenmiş büyük bir üçüncü taraf python2.7 uygulaması, bir grup python betiği var ve varsayılan olarak sahip olduğum python 3.5 yerine python2.7 gerektiriyor.Belirli bir terminal penceresinde python2'ye geçici olarak nasıl geçiş yapılır?

$ python 
Python 3.5.1 (default, Mar 3 2016, 09:29:07) 
[GCC 5.3.0] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 


$ python2 
Python 2.7.11 (default, Mar 3 2016, 11:00:04) 
[GCC 5.3.0] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

Ben $ some_app arg1 arg2 olarak bu uygulamayı çalıştırmak. Python2'yi geçici bir çözüm olarak, tercihen sadece bu tek terminal penceresinde nasıl kullanabilirim?

Bu uygulamanın çağrısını "python" ile değiştirmiyorum. Ben $ some_app arg1 arg2 gibi diyorum. Python sürümünü kalıcı olarak değiştirmek veya uygulamanın kaynak kodunu değiştirmek istemiyorum.

+0

'python2/yol// için some_app arg1 arg2'? – Phillip

+0

bu uygulama bir Python komut dosyası (o # 'gibi bir şey var mı! Ilk satırında/usr/bin/env python') nedir? –

+2

'#!/Usr/bin/env python2.7' eklemenizi ister misiniz? Ya da belki sadece terminali 'python2.7 uygulaması ARG1 gelen bir –

cevap

0

Terminal takma adlarından yararlanabilirsiniz. takma geçici olmayacak ama sistem etkilemez, bu yüzden gibi kısa bir takma sahip olabilir:

takma içerdeki Bashrc dosyasında "/usr/bin/python2.7" pyt ana dizin

1

sevdiğim yolu: virtualenv kullanmayın veya birden fazla Python ortamları tutmak için

en çok kullanılan araç pyenv virtualenv olduğunu. Çevresinde virtualenvwrapper adı verilen şekerli bir sarıcı kullanmayı seviyorum.

Sonra
sudo pip install virtualenvwrapper 

benim kabuk profiline aşağıdaki gibi bir satır ekleyin:

source /usr/local/bin/virtualenvwrapper.sh 

Şimdi Python her sürümü için sanal bir ortam yaratabilir

Genellikle bunu kullanarak yüklemek . Tanrım, her Python projesi için bir tane yapabilirsin!

mkvirtualenv py3 
mkvirtualenv py2 --python=python2 

Sonra yazarak python2 geçici geçiş yapabilirsiniz: kolayca Python birden sürümleri arasında geçiş sağlayan pyenv adlı başka aracı yoktur

workon py2 

. “Bu, basit, göze batmayan ve tek bir şeyi iyi yapan tek amaçlı araçların UNIX geleneğini izler. Bu proje, rbenv ve ruby-build'den ayrıldı ve Python için değiştirildi” diye ekledi. Popülerleşiyor gibi görünüyor.

Her ikisi de bu kullanım için zarif, kullanımı kolay ve mükemmel bir uyum sağlar (geçici olarak terminal penceresinde belirli bir python sürümüne geçin).

Unix yolu: Çalıştırdığınız 3. taraf uygulama bu kuralı takip ediyorsa

#!/usr/bin/env python 

şunları yapabilirsiniz: gibi Python komut dosyaları için shebang yazmak için en iyi yöntemdir $PATH

set PATH'ı değiştir.Örneğin, varsayılan piton tercüman istediğiniz biri değildir herhalde:

$ env python --version 
Python 3.5.1 

geçici varsayılan yapmak isteyen piton yerel bir kopyasını yapın (eğer sadece bu seferlik yapmak zorunda):

$ mkdir ~/local 
$ mkdir ~/local/python2 
$ ln -s `which python2` ~/local/python2/python 
Sonra, varsayılan python2 yapmak istediğiniz her zaman yapmak:

$ export PATH=~/local/python2/:$PATH 

Şimdi varsayılan sürümü istediğiniz edilir:

$ env python --version 
Python 2.7.10 

pozitif karma yolu: 3. taraf uygulama shebang

bir kodlanmış yol varsa belki app yazar en iyi uygulamaları takip etmek ve shebang Python yolu kodlanmış vermedi. Örneğin, programın ilk satırının şu olduğunu düşünelim:

#!/usr/bin/python 

Bu durumda, önceki hilelerin hiçbiri işe yaramaz. Şahsen ben onu kurallı formata çeviririm ve üçüncü taraf uygulamasının yazarı için bir çekme isteği gönderirim.

otoriter yol: - bu sistemde her pencere ve Avery diğer kullanıcıyı etkilediğinden - sistem genelinde varsayılan Python sürümünü değiştirmek

bu gerçekten sorunuza cevap etmese de ben uğruna o söz ediyorum tamlık Ubuntu kullanıyorsanız

Örneğin, kullanarak varsayılan piton tercüman değiştirebilirsiniz:

$ update-alternatives --config python 

Diğer Linux dağıtımları muhtemelen böyle bir şey var.

Hızlı ve kirli

Shebang ne yapıyor? Kabuğun verilen tercümanı kullanarak komut dosyasını çağırmasını söyler. Sen shebang yok sayabilir ve uygulamayı arayabilirsiniz:

$ python2 `which app_name` 

Veya:

#!/usr/bin/python2 

Not bu olur yani: Ayrıca sadece shebang programını düzenlemek ve değiştirmek

$ python2 /path/to/app_name 

Python yorumlayıcısını bu program için kalıcı olarak değiştirir, geçici değildir veya belirli bir terminalle sınırlandırılmamıştır. En kötüsü, program genel PATH durumundaysa, sistemin diğer kullanıcıları etkilenecektir. Eski davranışı geri yüklemek isterseniz, değişikliklerinizi geri almanız gerekir.

Yani, bazen sadece doğru yapmakla ilgilenmiyorsunuz, sadece işe yaramak istiyorsunuz.

0

soru Linux ile etiketlenmiş olarak, senin komut varsayalım ki çizgi ile başlar

#! /usr/bin/env python 

Bu sistem geçerli Python kurulumunu seçmek için izin harika ama burada gereksinimi özellikle sürümünü kullanmaktır Eğer Anaconda a kullanıyorsanız

#! /path/to/python-2.7  
+0

Bu çalışabilir, ancak bir 3. taraf komut dosyasını değiştirmek zorunda kalmamak diğer çok popüler çözümler vardır. –

0

: 2.7

Yani IMHO sadece gerekli sürümünü seçmek için hashbang hattını değiştirmek zorunda Python dağıtımı s, bu yerleşik sanal ortamlar vardır. Paul tavsiye edildiği gibi değil, virtualenv ve virtualenvwrapper kullanın. Ayrıca

Ben autoenv önerilir. Bununla, içinde bulunduğunuz klasöre göre venvinizi otomatik olarak değiştirebilirsiniz. Bash için bir tane ve bir tane de zsh için.

İlgili konular