Pythonyolunuzu önceden oluşturulmuş bir virtualenv'de nasıl ayarlarsınız?


108

Hangi dosyayı ve nasıl düzenlerim? Sanal bir ortam oluşturdum.


doğru dizinleri gösterdiğini kontrol edin. Henüz bir hesabınız yoksa, Yeni düğmesini tıklayın ve oluşturun.

11
Add2virtualenv komutunu kullanın .
s29

5
add2virtualenv bir virtualenvwrapperkomuttur. Parçası değil virtualenv.
kojiro

Yanıtlar:


125

DÜZENLE # 2

Doğru cevap @ arogachev'in cevabıdır .


PYTHONPATHBir virtualenv'de kullanılanı değiştirmek isterseniz , virtualenv'inizin bin/activatedosyasına aşağıdaki satırı ekleyebilirsiniz :

export PYTHONPATH="/the/path/you/want"

Bu şekilde, PYTHONPATHbu virtualenv'i her kullanışınızda yeni ayarlanacaktır.

DÜZENLEME: (@ RamRachum'un yorumunu yanıtlamak için)

Orijinal değerine geri döndürmek için deactivateşunları ekleyebilirsiniz:

export OLD_PYTHONPATH="$PYTHONPATH"

daha önce bahsedilen satırdan önce ve aşağıdaki satırı bin/postdeactivatebetiğinize ekleyin .

export PYTHONPATH="$OLD_PYTHONPATH"

1
Üzerinde de kaldırılacak deactivatemı?
Ram Rachum

1
Yani bu, yeni oluşturulan bir sanal ortamın PYTHONPATHvirtualenv yerel yolu yerine varsayılana (global olana) sahip olduğu anlamına mı geliyor?
ducin

6
Bu benim için çok iyi çalıştı, virtualenvwrapper kullanmıyorum. Tek not, böyle bir bin / postdeactivate betiğine sahip olmadığım, aktifleştirmenin bir deaktive etme işlevi olduğu. Bu nedenle kod satırı oraya konulmalı, işlevdeki diğer işlemler gibi onu bir if ifadesine sarmaya dikkat edilmelidir.
Niccolò

2
Virtualenv'in bunu varsayılan olarak yapmaması garip görünüyor.
Seth

2
Düzenleme # 2 bir yalan! :) Doğru cevap @ arjen-p-de-
vries'in cevabı

73

@ S29 tarafından yapılan yorum bir cevap olmalıdır:

Sanal ortama bir dizin eklemenin bir yolu, virtualenvwrapper'ı (birçok şey için kullanışlıdır) yüklemek ve sonra yapmaktır.

mkvirtualenv myenv
workon myenv
add2virtualenv . #for current directory
add2virtualenv ~/my/path

Bu yolu kaldırmak istiyorsanız dosyayı düzenleyin myenvhomedir/lib/python2.7/site-packages/_virtualenv_path_extensions.pth

Virtualenvwrapper ile ilgili belgeler http://virtualenvwrapper.readthedocs.org/en/latest/ adresinde bulunabilir.

Bu özellikle ilgili belirli belgeler http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html?highlight=add2virtualenv adresinde bulunabilir.


6
kaldırmak için:add2virtualenv -d
konuşma

1
çok daha iyi olduğu için bu yanıtı benimkiyle ilişkilendirdi
mdeous

27

.pthAranacak dizini içeren bir dosya oluşturabilir ve site-packagesdizine yerleştirebilirsiniz. Örneğin:

cd $(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
echo /some/library/path > some-library.pth

Etki ekleyerek aynıdır /some/library/pathiçin sys.pathve yerel kalır virtualenvkurulum.


7
Bu yaklaşımı gerçekten beğendim; neredeyse etkinleştirmek / devre dışı bırakmak için satır eklemek kadar kararsız değildir ve virtualenvwrapper kullanılmasını gerektirmez. Site paketleri dizinini bulmak için python'u çağırmak istemiyorsanız, bu oldukça öngörülebilir yoldur $VIRTUALENV_ROOT/lib/pythonX.Y/site-packages. .Pth
Alec

2
Mutlak bir yol yazmak istemedim çünkü çalışma alanlarım dosya sistemimde hareket ediyor. Ve proje yolumda boşluklar var. Bu yüzden biraz değiştirilmiş komutu pushd "$(venv/bin/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")" ...path/to/project/venv/lib/python3.7/site-packages ...path/to/project echo ../../../../src > my_project.pth popdyazdım : Sonra virtualenv'imi devre dışı bıraktım ve yeniden etkinleştirdim. Artık proje dizinimin nerede olduğunu bilmeyi gerektiren proje kodunu çalıştırabilirim.
Jim DeLaHunt

4
Bu doğru cevap. Satıcı tarafından sağlanan komut dosyasını ( /bin/activate) değiştirmek bir yanlış uygulamadır ve üçüncü taraf araçların yüklenmesi, aynısını elde etmek için yerleşik bir yol kullanmaktan daha düşüktür.
Kızıl

2
  1. Virtualenv'inizi başlatın
cd venv

source bin/activate
  1. Aşağıdaki komutu girerek python yolunuzu ayarlayın veya değiştirin:
export PYTHONPATH='/home/django/srmvenv/lib/python3.4'
  1. python yolunu kontrol etmek için python girin:
   python

      \>\> import sys

      \>\> sys.path

1

Etkinleştirme betiğimi .virtualenvrc, geçerli dizinde varsa dosyanın kaynağı ve PYTHONPATHetkinleştirmede / devre dışı bırakıldığında kaydetme / geri yükleme için değiştirdim.

Yamalı activatekomut dosyasını burada bulabilirsiniz . . Virtualenv 1.11.6 tarafından oluşturulan etkinleştirme komut dosyasının yerine geçilir.

Sonra şuna benzer bir şey ekledim .virtualenvrc:

export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}/some/library/path"

-20

Burada zaten cevaplandı -> Sanal ortamım (python) PYTHONPATH'ımın bozulmasına neden oluyor mu?

UNIX / LINUX

Bunu ~ / .bashrc dosyasına "export PYTHONPATH = / usr / local / lib / python2.0" ekleyin ve "kaynak ~ / .bashrc" VEYA ". ~ / .Bashrc" yazarak kaynak oluşturun.

WİNDOWS XP

1) Kontrol paneline gidin 2) Sistem'e çift tıklayın 3) Gelişmiş sekmesine gidin 4) Ortam Değişkenleri'ne tıklayın

Sistem Değişkenleri penceresinde, PYTHONPATH adında bir değişkeniniz olup olmadığını kontrol edin. Zaten bir tane varsa, doğru dizinleri gösterdiğini kontrol edin. Henüz bir hesabınız yoksa, Yeni düğmesini tıklayın ve oluşturun.

PYTHON KODU

Alternatif olarak, kodunuzun altında da yapabilirsiniz: -

import sys
sys.path.append("/home/me/mypy") 

4
-1: Bu, kullanıcının PYTHONPATH'ına hitap eder, virtualenv'in PYTHONPATH'ına değil.
twneale
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.