Apa cara yang tepat untuk menginstal pip, virtualenv, dan mendistribusikan untuk Python?

247

Pertanyaan pendek

Latar Belakang

Dalam jawaban saya untuk pertanyaan SO 4314376 , saya merekomendasikan menggunakan ez_setupsehingga Anda dapat menginstal pipdan virtualenvsebagai berikut:

curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv

Saya awalnya menarik instruksi ini dari posting blog Jesse Noller. Jadi, Anda ingin menggunakan Python di Mac? . Saya suka gagasan menjaga direktori global paket situs yang bersih, jadi satu-satunya paket yang saya instal ada virtualenvwrapperdan distribute. (Saya baru-baru ini ditambahkan distributeke kotak alat saya karena pengumuman layanan publik Python ini . Untuk menginstal dua paket ini, saya menggunakan:

sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py

Tidak ada lagi setuptools dan easy_install

Untuk benar-benar mengikuti pengumuman layanan publik Python , pada pemasangan Python baru, saya akan melakukan hal berikut:

curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper

Teguran Glyph

Dalam komentar atas jawaban saya untuk pertanyaan SO 4314376 , pengguna SO Glyph menyatakan:

TIDAK. TIDAK PERNAH melakukan sudo python setup.py installapapun. Tuliskan ~ / .pydistutils.cfg yang menempatkan instalasi pip Anda menjadi ~ / .local atau apalah. Terutama file yang dinamai ez_setup.pycenderung menyedot versi yang lebih baru dari hal-hal seperti setuptools dan easy_install, yang berpotensi merusak hal-hal lain pada sistem operasi Anda.

Kembali ke pertanyaan singkat

Jadi , respons Glyph membawa saya ke pertanyaan awal saya:

Matthew Rankin
sumber
Matthew, aku tahu utas ini agak tua. Tetapi adakah yang baru dalam hal ini? Apakah masih merupakan ide yang buruk untuk python distribute_setup.pydiikuti oleh easy_install pipdan virtualenv --distribute venv? (lihat python-guide.readthedocs.org/en/latest/starting/install/… ), dan jika demikian, mengapa?
Amelio Vazquez-Reina
2
Ada apa dengan sudo apt-get install python-{pip,virtualenv}???
MestreLion
1
Ya, umumnya paket yang lebih lama-tetapi-kompatibel-baik-baik saja ketika versi kecil tidak masalah untuk tujuan Anda, tetapi Anda secara khusus bertanya "apa yang salah dengan" dan saya mencoba untuk mendapatkan lencana pedant saya.
2
FYI, beberapa link dalam pertanyaan ini sekarang usang / rusak - Saat ini saya (tidak bisa) melihat orang-orang untuk pip, virtualenv, dan Python PSA.
Chris Sprague
1
http://python-distribute.org/distribute_setup.pyredirect ke 404 :(
jitter

Jawaban:

173

Anda dapat melakukan ini tanpa menginstal apa pun ke dalam python itu sendiri.

Anda tidak perlu sudo atau hak istimewa apa pun.

Anda tidak perlu mengedit file apa pun.

Instal virtualenv ke lingkungan virtual bootstrap. Gunakan lingkungan virtual itu untuk membuat lebih banyak. Karena virtualenv dikirimkan dengan pip dan distribusi, Anda mendapatkan semuanya dari satu pemasangan.

  1. Unduh virtualenv:
  2. Buka paket tarball sumber
  3. Gunakan tarball yang tidak dibongkar untuk menciptakan lingkungan virtual yang bersih. Lingkungan virtual ini akan digunakan untuk "bootstrap" orang lain. Semua lingkungan virtual Anda akan secara otomatis berisi pip dan distribusi.
  4. Dengan menggunakan pip, instal virtualenv ke lingkungan bootstrap itu.
  5. Gunakan lingkungan bootstrap itu untuk membuat lebih banyak!

Berikut ini contoh dalam bash:

# Select current version of virtualenv:
VERSION=12.0.7
# Name your first "bootstrap" environment:
INITIAL_ENV=bootstrap
# Set to whatever python interpreter you want for your first environment:
PYTHON=$(which python)
URL_BASE=https://pypi.python.org/packages/source/v/virtualenv

# --- Real work starts here ---
curl -O $URL_BASE/virtualenv-$VERSION.tar.gz
tar xzf virtualenv-$VERSION.tar.gz
# Create the first "bootstrap" environment.
$PYTHON virtualenv-$VERSION/virtualenv.py $INITIAL_ENV
# Don't need this anymore.
rm -rf virtualenv-$VERSION
# Install virtualenv into the environment.
$INITIAL_ENV/bin/pip install virtualenv-$VERSION.tar.gz

Sekarang Anda dapat menggunakan lingkungan "bootstrap" Anda untuk membuat lebih banyak:

# Create a second environment from the first:
$INITIAL_ENV/bin/virtualenv py-env1
# Create more:
$INITIAL_ENV/bin/virtualenv py-env2

Tergila-gila!

Catatan

Ini mengasumsikan Anda tidak menggunakan versi virtualenv yang benar-benar lama. Versi lama membutuhkan bendera --no-site-packges(dan tergantung pada versi Python, --distribute). Sekarang Anda dapat membuat lingkungan bootstrap Anda hanya dengan python virtualenv.py path-to-bootstrapatau python3 virtualenv.py path-to-bootstrap.

Walker Hale IV
sumber
13
Lelah hanya karena sangat generik, unduhan sederhana, untar dan kemudian python virtualenv.py TARGET_DIRECTORYmelakukan hal yang sama.
Sebastian Blask
3
Ini brilian. Saya mengadaptasinya untuk menjawab pertanyaan saya yang lebih spesifik tentang menginstal virtualenv di beberapa versi Python secara independen dari paket sistem - stackoverflow.com/questions/6812207/… - berfungsi dengan baik.
david.libremone
6
catatan: saat ini virtualenvtidak memerlukan opsi '--tidak ada situs - paket --distribusi'. --system-site-packagesMungkin sebaliknya yang diperlukan
jfs
1
Anda bisa mendapatkan tarball stabil terbaru dengan perintah ini:curl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
Bohr
1
Di mana Anda menginstal virtualenvwrapper? Docs memperingatkan secara khusus untuk tidak menginstalnya dalam virtualenv (meskipun tampaknya berfungsi ).
Aryeh Leib Taurog
21

Saya pikir Glyph berarti melakukan sesuatu seperti ini:

  1. Buat direktori ~/.local, jika belum ada.
  2. Di Anda ~/.bashrc, pastikan itu ~/.local/binaktif PATHdan ~/.localaktif PYTHONPATH.
  3. Buat file ~/.pydistutils.cfgyang berisi

    [install]
    prefix=~/.local
    

    Ini adalah file format standar ConfigParser.

  4. Unduh distribute_setup.py dan jalankan python distribute_setup.py(tidak sudo). Jika ada keluhan tentang site-packagesdirektori yang tidak ada , buatlah secara manual:

    mkdir -p ~ / .local / lib / python2.7 / paket-situs /

  5. Jalankan which easy_installuntuk memverifikasi bahwa itu berasal~/.local/bin

  6. Lari pip install virtualenv
  7. Lari pip install virtualenvwrapper
  8. Buat folder env virtual yang berisi, katakanlah ~/.virtualenvs
  9. Di ~/.bashrctambahkan

    export WORKON_HOME
    source ~/.local/bin/virtualenvwrapper.sh
    

Itu saja, tidak ada gunanya sudosama sekali dan lingkungan Python Anda dalam ~/.local, benar-benar terpisah dari OS Python. Penafian: Tidak yakin seberapa kompatibel virtualenvwrapperdalam skenario ini - saya tidak bisa mengujinya di sistem saya :-)

Vinay Sajip
sumber
2
Apakah ~ / .local sedikit nama bodoh? Bagaimana jika Ruby ingin melakukan hal yang sama? Mungkin ~ / .python27 akan lebih baik?
Jonathan Hartley
1
Sebagai catatan, saya baru saja mencoba hal yang sama pada Windows dan harus menambahkan folder lokal (misalnya "lokal") dan "paket lokal \ Lib \ situs-paket" ke PYTHONPATH agar berhasil menjalankan distribut_setup.py.
technomalogical
1
Satu masalah terakhir dengan pendekatan ini: virtualenv tidak kompatibel dengan menggunakan file .pydistutils.cfg. Lihat github.com/pypa/virtualenv/issues/88
Dan
3
Saya pikir harus ada easy_install pipantara langkah 5 dan 6.
SiggyF
5
The ~ / .local berasal dari PEP 370.
Éric Araujo
16

Jika Anda mengikuti langkah-langkah yang disarankan dalam beberapa tutorial yang saya tautkan dalam jawaban ini , Anda bisa mendapatkan efek yang diinginkan tanpa langkah-langkah "manual" yang agak rumit dalam jawaban Walker dan Vinay. Jika Anda menggunakan Ubuntu:

sudo apt-get install python-pip python-dev

Hal yang sama dicapai dalam OS X dengan menggunakan homebrew untuk menginstal python (lebih detail di sini ).

brew install python

Dengan pipterinstal, Anda dapat menggunakannya untuk mendapatkan paket yang tersisa (Anda dapat menghilangkan sudodi OS X, karena Anda menggunakan instalasi python lokal Anda).

sudo pip install virtualenvwrapper

(Ini adalah satu-satunya paket yang perlu Anda instal secara global dan saya ragu itu akan berbenturan dengan sistem tingkat apa pun dari OS. Jika Anda ingin menjadi super aman, Anda dapat menyimpan versi distro sudo apt-get install virtualenvwrapper)

Catatan: di Ubuntu 14.04 saya menerima beberapa kesalahan dengan pemasangan pip , jadi saya menggunakan pip3 install virtualenv virtualenvwrapperdan menambahkan VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3ke .bashrc/.zshrcfile saya .

Anda kemudian menambahkan .bashrcfile Anda

export WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh

dan sumbernya

. ~/.bashrc

Ini pada dasarnya itu. Sekarang satu-satunya keputusan adalah apakah Anda ingin membuat virtualenv untuk menyertakan paket tingkat sistem

mkvirtualenv --system-site-packages foo

di mana paket sistem Anda yang ada tidak perlu diinstal ulang, mereka disinkronkan dengan versi juru bahasa sistem. Catatan: Anda masih dapat menginstal paket baru dan memutakhirkan paket yang disertakan dari sistem tanpa sudo - Saya mengujinya dan berfungsi tanpa gangguan apa pun dari juru bahasa sistem.

kermit@hocus-pocus:~$ sudo apt-get install python-pandas
kermit@hocus-pocus:~$ mkvirtualenv --system-site-packages s
(s)kermit@hocus-pocus:~$ pip install --upgrade pandas
(s)kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.10.1
(s)kermit@hocus-pocus:~$ deactivate
kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.8.0

Alternatifnya, jika Anda ingin lingkungan yang benar-benar terpisah, adalah

mkvirtualenv --no-site-packages bar

atau mengingat bahwa ini adalah opsi default, cukup

mkvirtualenv bar

Hasilnya adalah Anda memiliki virtualenv baru di mana Anda dapat dengan bebas dan tanpa sengaja menginstal paket favorit Anda

pip install flask
metakermit
sumber
Apakah ini tidak menginstal kedua setuptools dan mendistribusikan? Dan bukankah itu merusak paket seperti Tkinter dan pyopencl yang tidak suka setuptools?
hobs
Apakah pengaturan WORKON_HOME ke nol di bashrc memaksa venvwrapper untuk menggunakan sesuatu yang masuk akal seperti export WORKON_HOME="$HOME/.virtualenvs"?
hobs
Yah, itu menginstal apa pun yang menurut manajer paket Anda tergantung pada pip. Saat ini, itulah setuptools di Ubuntu dan OS X ( brew install pythonmenarik pip + setuptools in). Pendekatan ini berfungsi baik untuk saya. Selain itu, berfokus pada pip tampaknya akan menjadi jalur masa depan dalam kemasan Python juga.
metakermit
1
WORKON_HOMEdefault ke ~/.virtualenvs, ya. Ada garis di /usr/local/bin/virtualenvwrapper.shset itu workon_home_dir="$HOME/.virtualenvs" if [ "$workon_home_dir" = "" ].
metakermit
Mengerti. Terima kasih. Pendekatan sederhana Anda bekerja sangat baik untuk saya di Ubuntu 12,04 ketika pip menginstal modul yang pilih-pilih tentang menggunakan distribusi (pyopencl). Trik bagi saya adalah menindaklanjuti pip install virtualenv virtualenv-wrapperbaris Anda dengan pip install --upgrade distributedalam virtualenv diaktifkan yang kemudian saya instal pyopencl. Saya juga menambahkan export PROJECT_HOME="$HOME/src"ke bashrc saya untuk mengaktifkan mkprojectalat venv keren .
hobs
12

Python 3.4 dan seterusnya

Python 3.3 menambahkan modul venv , dan Python 3.4 menambahkan modul ensurepip . Ini membuat bootstrap pip semudah:

python -m ensurepip

Mungkin didahului oleh panggilan venvuntuk melakukannya di dalam lingkungan virtual.

Pip yang dijamin dijelaskan dalam PEP 453 .

gerrit
sumber
10

Di Ubuntu:

sudo apt-get install python-virtualenv

Paket python-pipini adalah dependensi, jadi itu akan diinstal juga.

Arik Halperin
sumber
1
python-virtualenv akan menginstal virtualenv dan pip. Setelah itu jalankan virtualenv untuk membuat lingkungan virtual Python. Dan jalankan pip dari dalam virtual env untuk menginstal paket lain.
jemeshsu
2
Ini memang pilihan yang paling bagus. cara yang "tepat" untuk menginstal sesuatu di OS Anda adalah dengan menggunakan sistem pemasang OS Anda ! Setelah itu Anda bisa bermain dengan pip, lebih disukai dalam virtualenv, dan tidak pernah menggunakan sudountuk keduanya
MestreLion
Sayangnya, OS yang disediakan versi pipterkadang memiliki bug yang signifikan, jadi saya sering berakhir menggunakan yang get-pip.pydisediakan di python.org.
RichVel
@RichVel dapatkah Anda menguraikan bug signifikan yang Anda temui?
danielpops
1
@danielpops - salah satu contohnya adalah masalah pip ini pada Ubuntu 16.04.1, tetapi mungkin ada masalah lain dengan versi tertentu dan kasus penggunaan.
RichVel
5

Saya membuat prosedur ini untuk kami gunakan di tempat kerja.

cd ~
curl -s https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz | tar xvz
cd pip-1.3.1
python setup.py install --user
cd ~
rm -rf pip-1.3.1

$HOME/.local/bin/pip install --user --upgrade pip distribute virtualenvwrapper

# Might want these three in your .bashrc
export PATH=$PATH:$HOME/.local/bin
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS="--distribute"
source $HOME/.local/bin/virtualenvwrapper.sh

mkvirtualenv mypy
workon mypy
pip install --upgrade distribute
pip install pudb # Or whatever other nice package you might want.

Poin-poin penting untuk keamanan:

  1. curl melakukan validasi ssl. wget tidak.
  2. Mulai dari pip 1.3.1, pip juga melakukan validasi ssl.
  3. Lebih sedikit pengguna yang dapat mengunggah tarbal pypi dari tarbal github.
bukzor
sumber
5

Pembaruan: Per Juli 2013 proyek ini tidak lagi dipertahankan. Penulis menyarankan menggunakan pyenv . (Pyenv tidak memiliki dukungan bawaan untuk virtualenv, tetapi bermain bagus dengannya.)

Pythonbrew adalah manajer versi untuk python dan dilengkapi dengan dukungan untuk virtualenv.

Setelah menginstal pythonbrew dan versi python menggunakan venvs sangat mudah:

# Initializes the virtualenv 
pythonbrew venv init

# Create a virtual/sandboxed environment 
pythonbrew venv create mycoolbundle  

# Use it 
pythonbrew venv use mycoolbundle
kioopi
sumber
@ kermit666 terima kasih. Apa cara yang lebih disukai untuk menandai jawaban saya yang sudah usang? Hapus saja?
kioopi
1
baik, Anda dapat membiarkannya apa adanya (ada instruksi tentang penggunaan pyenv untuk orang yang mengikuti tautan dari komentar saya, yang serupa dalam konsepnya dengan pythonbrew yang Anda rekomendasikan) atau lebih baik lagi mengedit jawaban dengan misalnya Perbarui September 2013 oleh menambahkan instruksi baru. Mungkin pythonbrew akan menjadi aktif sekali lagi di masa depan jadi saya tidak akan menghapus instruksi lama Anda. Untuk info lebih lanjut lihat meta .
metakermit
Lihat jawaban saya tentang pyenv, yang berfungsi dengan baik.
RichVel
3

Tidak ada masalah untuk melakukan pemasangan sudo python setup.py, jika Anda yakin itulah yang ingin Anda lakukan.

Perbedaannya adalah ia akan menggunakan direktori paket situs OS Anda sebagai tujuan untuk file .py yang akan disalin.

jadi, jika Anda ingin pip dapat diakses dengan lebar, itu mungkin cara untuk pergi. Saya tidak mengatakan bahwa cara orang lain itu buruk, tetapi ini mungkin cukup adil.

Alexis Métaireau
sumber
1
Ya, saya menggunakan cara itu. Dan beberapa waktu kemudian, memohon pip freezemembuat saya hampir beku - daftar paket, sedang menginstal sistem yang luas terlalu lama. Sejak saat itu, saya sangat menyarankan untuk menggunakan instalasi paket python "no sudo" dan "no os-wide".
Jan Vlcinsky
2

Saya menemukan masalah yang sama baru-baru ini. Saya menjadi lebih parsial dengan pola pikir "selalu menggunakan virtualenv", jadi masalah saya adalah menginstal virtualenv dengan pip tanpa menginstal distro ke direktori paket situs global atau pengguna saya. Untuk melakukan ini, saya secara manual mengunduh distribusi, pip dan virtualenv, dan untuk masing-masing saya menjalankan "python setup.py install --prefix ~ / .local / python-private" (dengan pengaturan sementara PYTHONPATH = ~ / .local / python-private) sehingga skrip setup dapat menemukan mendistribusikan). Saya telah memindahkan skrip virtualenv ke direktori lain yang saya miliki di PATH saya dan mengeditnya sehingga modul distribusi dan virtualenv dapat ditemukan di sys.path. Tada: Saya tidak menginstal apa pun ke / usr, / usr / local atau paket situs pengguna saya, tetapi saya bisa menjalankan virtualenv di mana saja, dan di virtualenv itu saya mendapatkan pip.

Éric Araujo
sumber
2

Saya mengalami berbagai masalah (lihat di bawah) menginstal modul SSL yang ditingkatkan, bahkan di dalam virtualenv, di atas versi Python yang disediakan OS yang lebih lama, jadi sekarang saya gunakan pyenv.

pyenv membuatnya sangat mudah untuk menginstal versi Python baru dan mendukung virtualenvs. Memulai jauh lebih mudah daripada resep untuk virtualenv yang tercantum dalam jawaban lain:

  • Di Mac, ketik brew install pyenvdan di Linux, gunakan pyenv-installer
  • ini memberi Anda dukungan virtualenv bawaan serta peralihan versi Python (jika perlu)
  • berfungsi dengan baik dengan Python 2 atau 3, dapat menginstal banyak versi sekaligus

Ini bekerja dengan sangat baik untuk mengisolasi versi "Python baru" dan virtualenv dari sistem Python. Karena Anda dapat dengan mudah menggunakan Python yang lebih baru (post 2.7.9), modul SSL sudah ditingkatkan, dan tentu saja seperti halnya pengaturan virtualenv modern yang Anda isolasi dari modul sistem Python.

Beberapa tutorial yang bagus:

The pyenv-virtualenvPlugin sekarang dibangun di - jenis pyenv commands | grep virtualenvuntuk memeriksa. Saya tidak akan menggunakan plugin pyenv-virtualenvwrapper untuk memulainya - lihat bagaimana Anda melanjutkan dengan pyenv-virtualenv yang lebih terintegrasi ke dalam pyenv, karena ini mencakup sebagian besar apa yang dilakukan virtualenvwrapper.

pyenvdimodelkan rbenv(alat yang bagus untuk beralih versi Ruby) dan satu-satunya ketergantungannya adalah bash.

  • pyenv tidak terkait dengan nama yang sangat mirip pyvenv- yaitu setara virtualenv yang merupakan bagian dari versi Python 3 terbaru, dan tidak menangani perpindahan versi Python

Peringatan

Dua peringatan tentang pyenv:

  1. Ini hanya bekerja dari bash atau shell serupa - atau lebih khusus, plugin pyenv-virtualenv tidak suka dash, yang ada /bin/shdi Ubuntu atau Debian.
  2. Itu harus dijalankan dari shell login interaktif (misalnya bash --loginmenggunakan terminal), yang tidak selalu mudah dicapai dengan alat otomatisasi seperti Ansible .

Karenanya pyenv terbaik untuk penggunaan interaktif, dan kurang bagus untuk server skrip.

Masalah modul SSL

Salah satu alasan untuk menggunakan pyenvadalah bahwa sering ada masalah dengan meningkatkan modul Python SSL ketika menggunakan versi Python yang disediakan sistem yang lebih lama:

RichVel
sumber
2
  • Anda dapat melakukan ini tanpa menginstal apa pun ke dalam python itu sendiri.

  • Anda tidak perlu sudo atau hak istimewa apa pun.

  • Anda tidak perlu menemukan versi terbaru dari virtualenvfile tar

  • Anda tidak perlu mengedit info versi dalam skrip bash untuk menjaga keadaan agar tetap terbaru.

  • Anda tidak perlu curl/ wgetatau tardiinstal, pipataueasy_install

  • ini berfungsi untuk 2.7 serta untuk 3.X

Simpan yang berikut ke /tmp/initvenv.py:

dari fungsi print_import masa depan

import os, sys, shutil, tempfile, subprocess, tarfile, hashlib

try:
    from urllib2 import urlopen
except ImportError:
    from urllib.request import urlopen

tmp_dir = tempfile.mkdtemp(prefix='initvenv_')
try:
    # read the latest version from PyPI
    f = urlopen("https://pypi.python.org/pypi/virtualenv/")
    # retrieve the .tar.gz file
    tar_found = False
    url = None
    sha256 = None
    for line in f.read().splitlines():
        if isinstance(line, bytes):
            line = line.decode('utf-8')
        if tar_found:
            if 'sha256' in line:
                sha256 = line.split('data-clipboard-text')[1].split('"')[1]
                break
            continue
        if not tar_found and 'tar.gz">' not in line:
            continue
        tar_found = True
        for url in line.split('"'):
            if url.startswith('https'):
                break
    else:
        print('tar.gz not found')
        sys.exit(1)
    file_name = url.rsplit('/', 1)[1]
    print(file_name)
    os.chdir(tmp_dir)
    data = urlopen(url).read()
    data_sha256 = hashlib.sha256(data).hexdigest()
    if sha256 != data_sha256:
        print('sha256 not correct')
        print(sha256)
        print(data_sha256)
        sys.exit(1)
    with open(file_name, 'wb') as fp:
        fp.write(data)
    tar = tarfile.open(file_name)
    tar.extractall()
    tar.close()
    os.chdir(file_name.replace('.tar.gz', ''))
    print(subprocess.check_output([sys.executable, 'virtualenv.py'] +
                                  [sys.argv[1]]).decode('utf-8'), end='')
    if len(sys.argv) > 2:
        print(subprocess.check_output([
            os.path.join(sys.argv[1], 'bin', 'pip'), 'install', 'virtualenv'] +

            sys.argv[2:]).decode('utf-8'), end='')
except:
    raise
finally:
    shutil.rmtree(tmp_dir)  # always clean up

dan gunakan sebagai

python_binary_to_use_in_venv /tmp/initvenv.py your_venv_name [optional packages]

mis. (jika Anda benar-benar membutuhkan distributelapisan kompatibilitas untuk setuptools)

python /tmp/initvenv.py venv distribute

Harap dicatat bahwa, dengan versi python yang lebih lama, ini mungkin memberi Anda InsecurePlatformWarnings¹.

Setelah Anda memiliki virtualenv Anda (nama misalnya venv) Anda dapat mengatur virtualenv lain dengan menggunakan yang virtualenvbaru saja diinstal:

venv/bin/virtualenv venv2

virtualenvwrapper

Saya sarankan melihat virtualenvwrapper juga, setelah pengaturan satu kali:

% /opt/python/2.7.10/bin/python /tmp/initvenv.py venv virtualenvwrapper

dan aktivasi (dapat dilakukan dari skrip login Anda):

% source venv/bin/virtualenvwrapper.sh

Anda dapat melakukan hal-hal seperti:

% mktmpenv 
New python executable in tmp-17bdc3054a46b2b/bin/python
Installing setuptools, pip, wheel...done.
This is a temporary environment. It will be deleted when you run 'deactivate'.
(tmp-17bdc3054a46b2b)% 

¹ Saya belum menemukan cara untuk menekan peringatan itu. Itu bisa diselesaikan di pipdan / atau request, tetapi pengembang menunjuk satu sama lain sebagai penyebabnya. Saya mendapat rekomendasi, seringkali tidak realistis, untuk memutakhirkan versi python yang saya gunakan ke versi terbaru. Saya yakin ini akan merusak misalnya saya menginstal Linux Mint 17. Untungnya pipcache paket, jadi Peringatan dibuat hanya sekali per paket instal.

Anthon
sumber
Peringatan InsecurePlatformWarning(yaitu peringatan jika Python lebih tua dari versi 2.7.9) dapat diperbaiki dengan menginstal paket tambahan pyopenssl, pyasn1, ndg-httpsclient dari PyPI. (Ini mendukung SSL, mendekode sertifikat, https via PyOpenSSL.) Tanpa protokol yang benar, itu benar-benar tidak cukup aman untuk mengunduh dan menjalankan kode apa pun.
hynekcer
@hynekcer saya akan mencobanya. Saya bertanya pada diri sendiri mengapa pip dan / atau permintaan tidak dibuat tergantung pada paket-paket itu untuk versi python yang sesuai (lama).
Anthon
0

Ada instruksi bagus di situs resmi Virtualenv. https://pypi.python.org/pypi/virtualenv

Pada dasarnya apa yang saya lakukan, instal pipdengan sudo easy_install pip, kemudian digunakan sudo pip install virtualenvkemudian menciptakan lingkungan dengan: virtualenv my_env(beri nama apa yang Anda inginkan), mengikuti yang saya lakukan virtualenv --distribute my_env:; yang diinstal distributedan pipdi virtualenv saya.

Sekali lagi, ikuti instruksi di virtualenvhalaman.

Agak merepotkan, datang dari Ruby; P

Victor S
sumber
0

Berikut adalah cara yang bagus untuk menginstal virtualenvwrapper (perbarui ini ).

Unduh virtualenv-1.11.4 (Anda dapat menemukan yang terbaru di sini ), Unzip, bukaterminal

# Create a bootstrapenv and activate it:
$ cd ~
$ python <path to unzipped folder>/virtualenv.py bootstrapenv
$ source bootstrapenv/bin/activate

# Install virtualenvwrapper:
$ pip install virtualenvwrapper
$ mkdir -p ~/bootstrapenv/Envs

# append it to file `.bashrc`
$ vi ~/.bashrc
  source ~/bootstrapenv/bin/activate
  export WORKON_HOME=~/bootstrapenv/Envs
  source ~/bootstrapenv/bin/virtualenvwrapper.sh

# run it now.
$ source ~/.bashrc

Itu dia, sekarang Anda bisa menggunakan mkvirtualenv env1, lsvirtualenvdll

Catatan: Anda dapat menghapus virtualenv-1.11.4dan virtualenv-1.11.4.zipdari folder Unduhan.

suhailvs
sumber
0

Berita baiknya adalah jika Anda telah menginstal python3.4, pyvenv sudah diinstal. Jadi hanya

pyvenv project_dir
source project_dir/bin/activate
python --version   
python 3.4.*

Sekarang dalam env virtual ini, Anda dapat menggunakan pip untuk menginstal modul untuk proyek ini.

Biarkan env virtual ini, adil

deactivate
Maoyang
sumber