Virtualenv'de Python 3'ü kullanma


780

Virtualenv kullanarak , projelerimi varsayılan Python (2.7) sürümü ile çalıştırıyorum. Bir projede, Python 3.4 kullanmam gerekiyor.

Kullandığım brew install python3benim Mac üzerinde yüklemek için. Şimdi, yeni sürümü kullanan bir sanal reklamı nasıl oluştururum?

örneğin sudo virtualenv envPython3

Eğer denersem:

virtualenv -p python3 test

Alırım:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable

1
tercümanı sadece mevcut ortamınızda güncellemeyi denediniz mi yoksa sıfırdan başlamaya mı karar verdiniz?
Charlie Parker

Mac'te sistem python'unu (python2.x içinde tutarak) güncellemeden sanal ortamda yalnızca python3 yüklemek mümkün müdür?
Haziran

Yanıtlar:


1386

sadece koş

virtualenv -p python3 envname

OP düzenlemesinden sonra güncelleme:

OP'nin virtualenv sürümünde burada açıklandığı gibi bir hata oluştu . Sorun şu şekilde giderildi:

pip install --upgrade virtualenv

17
Virtualenv yükseltme çalıştı, ama nedense ben de python3 çalıştırılabilir hakkında açık olması gerekiyorduvirtualenv -p $(which python3) envname
dkamins

2
yeni bir ortam oluşturmak yerine, mevcut ortamın python yorumlayıcısını değiştirmek mümkün müdür?
Charlie Parker

Raspbian Jessie üzerinde 'virtualenv --no-site-Packages python3.4' çalıştı. --distribute kullanımdan kaldırıldı ve -p sanalenv python3 kullandığından -p gerekli görünmüyor.
alkopop79

Neden çalıştırdıktan sonra olmasıdır virtualenv -p python3 my_virtual_env, python3ayrıca sanal ortam dışarıdan erişilebilir?
Bishwas Mishra

@CharlieParker Sırasıyla aşağıdaki iki adımı gerçekleştirebilirsiniz: 1. Sil bin, lib, include, localve shareprojenizin kök dizininde dizinleri. 2. Terminal virtualenv -p python3 .run'da : geçerli dizinde yeni bir Python3 virtualenv başlatır.
Calleniah

251

Python 3 sanal ortamlar için yerleşik bir desteğe sahiptir - venv . Bunun yerine bunu kullanmak daha iyi olabilir. Dokümanlara atıfta bulunarak:

Sanal ortamların oluşturulması pyvenv betiği çalıştırılarak yapılır:

pyvenv /path/to/new/virtual/environment

Python 3.6 ve daha yenisi için güncelleme:

As pawciobiel doğru yorumlar , pyvenvolduğu kaldırılmış Python 3.6 olarak ve yeni bir yoludur:

python3 -m venv /path/to/new/virtual/environment

2
umarım haklısın çünkü ben sadece pyenv ile birlikte python 3.5.2
Jayesh

1
Konumla ilgili endişeleri doğrulayan herhangi bir bilgi bulamadım, yeniden seçilebilir bir seçenek olarak kaldırıldı .... şimdi gereksiz mi? geçici bir çözüm mü? ya da şimdi bir uygulama hazırlamak tamamen işe yaramaz mı?
JM Becker

7
Tam olarak da çalıştırabilirsiniz: python3 -m venv /path/v3pyvenv betiği Python 3.6'dan itibaren kullanımdan kaldırılmıştır.
pawciobiel

4
mac üzerinde en son anaconda python 3.6 ve python3 -m venv /path/v3burada hataları kullanarak . Error: Command '['/path/v3/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exitBir şey mi kaçırıyorum? Bu --without-pipseçenekle, en azından komut dosyalarını doğru bir şekilde etkinleştir / devre dışı bırak ile venv oluşturur.
monkut

3
Herkes bir python3.6 -m venv <venvname> etkinleştirmek için biliyor. Oluşturulan dizinde Komut Dosyası / yoktur veya bin / alt dizininde "etkinleştir" yoktur.
Shayne

60

Pyenv'i denedim ve python sürümlerini değiştirmek için çok kullanışlı (global, klasörde veya sanal ortamda yerel):

brew install pyenv

ardından istediğiniz Python sürümünü yükleyin:

pyenv install 3.5.0

ve ihtiyaç duyulan tercüman sürümüne giden yolu içeren bir sanal veri oluşturun

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

İşte bu, sürümü kontrol edin:

. ./myenv/bin/activate && python -V

Pyenv pyenv-virtualenv için de bir eklenti var ama benim için bir şekilde işe yaramadı.


yönteminizin yeni bir python ortamı oluşturması gerekiyor gibi görünüyor. Pyenv istediğimde sanal kod ve basitçe python sürümümü değiştirebilir mi?
Charlie Parker

58

Önkoşulları yükleyin.

sudo apt-get install python3 python3-pip virtualenvwrapper

Python3 tabanlı bir sanal ortam oluşturun. İsteğe bağlı olarak --system-site-packagesbayrağı etkinleştirin .

mkvirtualenv -p /usr/bin/python3 <venv-name>

Sanal ortama geçin.

workon <venv-name>

pipPaket yöneticisini kullanarak diğer gereksinimleri yükleyin .

pip install -r requirements.txt
pip install <package_name>

Aynı anda birden fazla python projesi üzerinde çalışırken, genellikle pdbppglobal gibi ortak paketlerin kurulması ve daha sonra sanal sunucularda kullanılması önerilir .

Bu tekniği kullanmak, minimum disk alanı ve ağ bant genişliği tüketmek dışında, paketleri almak ve yüklemek için çok fazla zaman kazandırır.

sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Django'ya özgü talimatlar

Çok fazla sistem çapında python paketi varsa, --system-site-packagesözellikle geliştirme sırasında bayrağı kullanmamanız önerilir, çünkü Django başlangıcını çok yavaşlattığını fark ettim. Django ortamını başlatma işleminin tüm site paketlerini sistem yolundan manuel olarak taradığını ve eklediğini düşünüyorum. Hatta python manage.py shellçok yavaş olur.

Bu seçeneğin hangi seçeneğin daha iyi çalıştığını söyledikten sonra. --system-site-packagesDjango projeleri için bayrağını atlamak güvenli olabilir .


1
(Kullanmıyordu hariç ben OSX için bu uygulanan, işe yaradı apt-getama brew)
sdkks

38
virtualenv --python=/usr/bin/python3 <name of env>

benim için çalıştı.


Bunu denedim ama söyleniyor The executable python3 (from --python=python3) does not exist, ne yapardın? Python3 isntall demlemek istedim ama iyi bir fikir olup olmadığından veya sistemimin kullandığım python sürümünü karıştırıp karıştırmayacağından emin değildim
Charlie Parker

Ubuntu 16.04'te bir cazibe gibi çalışıyor!
Eric Vieira

20

Ortam oluştururken belirli bir Python Sürümü belirleyebilirsiniz . Virtualenv.py'de
bahsedildi

virtualenv --python=python3.5 envname

Bazı durumlarda, bu yürütülebilir dosya için tam yol olmalıdır:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

Nasıl -pçalışır

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)

buradaki en iyi cevap bu
Collier

14

Aynı ERRORmesajı aldım . tbrisker'ın çözümü benim durumumda işe yaramadı. Bunun yerine bu sorunu çözdü:

$ python3 -m venv .env

13

Python / python3'te sanal bir ortam çalıştırmak için ihtiyacınız olan her şey bu

Öncelikle virtualenvkurulu değilse çalıştırın

pip3 install virtualenv 

Şimdi Çalıştır:

virtualenv -p python3 <env name> 

Bazen cmd virtualenvbaşarısız olur, eğer öyleyse bunu kullanın:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the file in a different location other than the current location

Şimdi sanal env'yi etkinleştirin:

source <env_name>/bin/activate

Veya:

source `pwd`/<env_name>/bin/activate

Şimdi koş

which python

Dir ve <env_name>/bin/pythonekinize giden tam yolu görmelisiniz

Virtualenv'den çıkmak için şunu çalıştırın:

deactivate 

8

Python artık "venv" adıyla kendi sanal ortam uygulamasını içeriyor. Virtualenv yerine bunu kullanmanızı öneririm.

Venv - docs'tan alıntı ,

3.6 sürümünden bu yana kullanımdan kaldırıldı: pyvenv, Python 3.3 ve 3.4 için sanal ortamlar oluşturmak için önerilen araçtır ve Python 3.6'da kullanımdan kaldırılmıştır.

Sürüm 3.5'te değiştirildi: Sanal ortamlar oluşturmak için venv kullanımı artık öneriliyor.

Pencereler için, bazı projelerde venv başlatmak için cmd'yi açın:

python -m venv "c:\path\to\myenv"

(Herhangi bir boşluk içeriyorsa dizin yolu çevresinde çift tırnak kullanmanızı öneririm. Örn: "C: / Dox'ım / Aralıklı Dizin / Bir Şey")

Venv kurulduktan sonra proje dizininizde yeni klasörler göreceksiniz. Bunlardan biri "Scripts" olurdu.

Venv'i etkinleştirmek veya çağırmak için ihtiyacınız olan:

C:\> <venv>\Scripts\activate.bat

Kabuğunuza “devre dışı bırak” yazarak sanal ortamı devre dışı bırakabilirsiniz. Bununla birlikte, "Lib" klasörü altında yer alacak projenize özel kütüphanelerinizi kurmaya hazırsınız.

================================ Düzenleme 1 ================ ==================== Aşağıda tartışılacak senaryo aslında sorulan şey değildir, sadece birisinin python uzantılı vscode kullanması durumunda bunu ekleyin

Python uzantısıyla vs kodu kullanırsanız, genel yüklemeye işaret eden pylint ile ilgili bir sorunla karşılaşabilirsiniz. Bu durumda, pylint sanal ortamınızda yüklü olan modülleri göremez ve bu nedenle içe aktarırken hatalar gösterir.

İşte bunu aşmak için basit bir yöntem.

cd Workspace\Scripts
.\Activate.ps1
code .

Temel olarak önce ortamı etkinleştiriyoruz ve sonra pylint'in ortam içinde başlaması ve tüm yerel paketleri görebilmesi için vs-kodunu çağırıyoruz.


Kullandığım virtualenvsanal ortamların gün be gün kullanıma ( workonvs.), ancak yeni sanal ortamların güvenilir yaratılması için python3.xbu Bunu eser bulunan tek yoludur.
Bobble

6

Diğer yanıtlara ek olarak, hangi virtualenv örneğini yürüttüğünüzü kontrol etmenizi öneririz:

which virtualenv

Bu, / usr / local / bin içinde bir şey çıkarsa, sisteminizin paket yöneticisini (OP'nin durumunda demlemek) kullanmadan virtualenv (muhtemelen easy_tools veya pip örneği kullanarak) kurmuş olmanız mümkündür. Bu benim sorunumdu.

Yıllar önce - daha da cahil olduğumda - virtualenv takmıştım ve sistemimin paket tarafından sağlanan virtualenvini maskeliyordu.

Bu eski, kırık sanal ağı kaldırdıktan sonra, sorunlarım ortadan kayboldu.


6

Python3.6'da python3 -m venv myenv, belgelere göre denedim , ama çok uzun sürüyordu. Bu yüzden çok basit ve hızlı komut python -m venv yourenv Python3.6 üzerinde benim için çalıştı.


5

Mac'te çalışmasını sağlamak için aşağıdakileri yapmak zorunda kaldım.

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere

İstediğiniz python sürümünün tam olarak nerede olduğunu bulmak için konum which python2.7veya which python3.5veya kullanın which python3.6, sonra yaklaşık--python=DIRECTORY
Santhosh

3

Virtualenv burritobrew install python3 ile birlikte python3 ( ) kurarsanız , mkvirtualenv -p $(which python3) env_name

Tabii ki, virtualenv burrito'nun sadece bir sarıcı olduğunu biliyorum, ancak yıllar boyunca bana iyi hizmet etti ve bazı öğrenme eğrilerini azalttı.


3

virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME> bu, sanal ortamınız için python3 yolu ekleyecektir .


2

Benim için çalıştı

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

2

Anaconda3 (Python 3) ile çalışırken sıkıntı çekenler için.

Kullanabilirsin

conda create -n name_of_your_virtualenv python=python_version 

Ortamı etkinleştirmek için (Linux, MacOS)

source activate name_of_your_virtualenv

Pencereler için

activate name_of_your_virtualenv

1

Yukarıdaki şeyleri denedim, hala işe yaramadı. Kaba bir güç olarak, anaconda'yı tekrar kurdum, virtualenv'i tekrar kurdum ... ve işe yaradı.

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
  Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
    100% |████████████████████████████████| 3.5MB 114kB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$ 

1

Python 2.7.5'i Centos 7'de varsayılan sürüm olarak tutmak istedim, ancak python 2.x'teki diğer sanal ortamlarla birlikte çalışan bir sanal ortamda python 3.6.1'e sahip olmak istedim.

Aşağıdaki bağlantıyı en yeni python sürümü (python 3.6.1) için en iyi çözümü buldum https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming -python için -çevre-3 . Farklı platformlar için adımları gösterir, ancak temel adımlar

  1. Platformunuz için python3.x (yoksa) yükleyin
  2. Platformunuz için python3.x-devel uygulamasını yükleyin
  3. Python 3.x'te sanal ortam oluşturun (örneğin $ python3.6 -m venv virenv_test_p3 /)
  4. Test ortamını python 3.x için etkinleştirin (örneğin kaynak virenv_test_p3 / bin / enable)
  5. Yeni python 3 sanal ortamınızda kullanmak istediğiniz ve desteklenen paketleri yükleyin (örneğin pip install Django == 1.11.2)

1

Aşağıdaki basit komutlar sürüm 3.5 ile sanal bir env oluşturabilir

apt-get install python3-venv

python3.5 -m venv <your env name>

3.6 olarak sanal env sürümünü istiyorsanız

python3.6 -m venv <your env name>


0

Miniconda3 yüklemesi ile çakışması nedeniyle aynı hatayı aldım, bu yüzden "hangi virtualenv" yazdığınızda ve miniconda yüklediyseniz ve bu yüklemeyi işaret ediyorsanız ya kaldırabilirsiniz (eğer benim gibi ve hareket etmediyseniz henüz değişmez) veya ortam değişkeninizi istediğiniz yüklemeyi gösterecek şekilde değiştirin.


0

Windows komut satırında aşağıdakiler benim için çalıştı. İlk önce python çalıştırılabilir dosyalarınızın nerede olduğunu bulun:

where python

Bu, sisteminizdeki farklı python.exe yollarını çıktılar. İşte benimki:

C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe

Python3 için, bu benim için ilk yolda bulundu, bu yüzden bir sanal ortam klasörü oluşturmak istediğiniz uygulamanın kök klasörüne cd. Sonra sanal ortamımı 'venv' adlandırarak Python3 çalıştırılabilir dosyama giden yolu içeren aşağıdakileri çalıştırıyorum:

virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv

Ardından, sanal ortamı etkinleştirin:

call venv\Scripts\activate.bat

Son olarak, bu sanal ortam için bağımlılıkları yükleyin:

pip install -r requirements.txt

Sanal ortamda uygulamanız için gereken kitaplıkları / modülleri biliyorsanız, bu gereksinimleri.txt el ile doldurulabilir. Uygulamayı başka bir ortamda çalıştırdıysanız, aşağıdakileri çalıştırarak bağımlılıkları otomatik olarak üretebilirsiniz (çalıştığı ortamdaki uygulama klasörüne cd):

pip freeze > requirements.txt

Daha sonra 'dondurulmuş' bir gereksiniminiz olan.t.txt dosyasına sahip olduğunuzda, gereksinimleri başka bir makineye veya temiz bir ortama aşağıdakilerle yükleyebilirsiniz (uygulama klasörüne cd'den sonra):

pip install -r requirements.txt

Python sürümünüzü sanal ortamda görmek için şunu çalıştırın:

python --version

O zaman işte ... sanal ortamınızda Python3'ünüz çalışıyor. Benim için çıktı:

Python 3.7.2
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.