Python virtualenv වලින් ඉවත් වන්නේ / පිටවන්නේ / අක්‍රිය කරන්නේ කෙසේද?


1637

මම භාවිතා කරන්නේ virtualenv සහ virtualenvwrapper. මට workonවිධානය භාවිතා කරමින් virtualenv හි නියමයන් අතර මාරු විය හැකිය .

me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$ 

සියලුම අථත්‍ය යන්ත්‍ර වලින් ඉවත් වී මගේ සැබෑ යන්ත්‍රයේ නැවත වැඩ කරන්නේ කෙසේද? මේ මොහොතේ, මට නැවත පැමිණීමට ඇති එකම ක්‍රමය me@mymachine:~$කවචයෙන් පිටවී නව එකක් ආරම්භ කිරීමයි. ඒක කරදරයක්. "කිසිවක්" මත වැඩ කිරීමට විධානයක් තිබේද, එසේ නම් එය කුමක්ද? එවැනි විධානයක් නොපවතී නම්, මම එය නිර්මාණය කරන්නේ කෙසේද?


5
"කිසිවක් නැත" වැඩ කිරීමට විධානයක් ඇත - එය ඔබගේ පවතින අථත්ය පරිසරයන් සියල්ලම ප්රදර්ශනය කරයි. කිසිදු තර්කයක් නොමැතිව "වර්කෝන්" ටයිප් කර Enter යතුර ඔබන්න. පහත දැක්වෙන පිළිතුරෙන් ඉවත්ව යාමේ විධානය "අක්‍රිය කරන්න".
ඩැනීඩ්

Answers:


2650

සාමාන්‍යයෙන්, virtualenv සක්‍රිය කිරීමෙන් ඔබට ෂෙල් ශ්‍රිතයක් ලබා දේ:

$ deactivate

එමඟින් දේවල් යථා තත්ත්වයට පත් වේ.

මම නැවත කේතය දෙස නැවත බැලුවෙමි virtualenvwrapper, ඔව්, එය ද deactivateසියලු ගුණධර්ම වලින් ගැලවීමේ මාර්ගය ලෙස සහාය වේ.

ඔබ ඇනකොන්ඩා පරිසරයක් හැර යාමට උත්සාහ කරන්නේ නම් , විධානය ඔබගේ අනුවාදය මත රඳා පවතී conda. මෑත සංස්කරණ (4.6 වැනි) condaඔබේ කවචයේ සෘජුවම ශ්‍රිතයක් ස්ථාපනය කරන්න, එවිට ඔබ ක්‍රියාත්මක වන්නේ:

conda deactivate

පැරණි කොන්ඩා අනුවාදයන් ඒ වෙනුවට තනිවම පිටපතක් භාවිතයෙන් අක්‍රිය කිරීම ක්‍රියාත්මක කරයි:

source deactivate

127
“අක්‍රිය කරන්න” විධානය ද්විමය හෝ ඔබ “ප්‍රභව” කරන පිටපතක් නොවේ; එය “සක්‍රිය කරන්න” ස්ක්‍රිප්ට් මඟින් ඔබගේ වර්තමාන කවචයේ ගතිකව අර්ථ දක්වා ඇති ෂෙල් අන්වර්ථයකි.
බ්‍රැන්ඩන් රෝඩ්ස්

6
Re පෙරවදන මේ අතර (අවුරුදු හතරකට පමණ පසු) මෙය ප්‍රලේඛනයට එකතු කර ඇති බව පෙනේ .
gertvdijk

6
එය "වැඩ කිරීම" හෝ "වැඩ කිරීම" ලෙස හැඳින්වුවහොත් වඩාත් අර්ථවත් වනු ඇත. නැතහොත් "වර්කෝන්" "සක්‍රීය කරන්න" ලෙස නම් කර තිබේ. අන්වර්ථයට යහපත්කමට ස්තූතියි.
kkurian

4
kkkurian - ඔබ යෝජනා කළ යුත්තේ නිකුතුව සඳහා වන ට්‍රැකර් virtualenvwrapperසහ සමහර විට ඩග් හෙල්මන් එය සලකා බලනු ඇති බවයි! සටහන, පසුව මෙම අදහස් කියවීමට හැකි අය සඳහා, ඒ workonවන නොවේ ස්වදේශික virtualenvවිධාන (මුල් ප්රශ්නය ගැන දේ වන) නමුත් virtualenvwrapperවිධානය!
බ්‍රැන්ඩන් රෝඩ්ස්

17
"වර්කෝන්" තුළ ඇති සත්‍ය virtualenv විධානය කුමක්දැයි අනුමාන කරන්න? ... (ස්පොයිලර් අනතුරු ඇඟවීම) ... ... (ස්පොයිලර් අනතුරු ඇඟවීම) ... ... (ස්පොයිලර් අනතුරු ඇඟවීම) ... ... (ස්පොයිලර් අනතුරු ඇඟවීම) ... සක්‍රිය කරන්න!
ෆියුචර්නර්ඩ්

54

මම අන්වර්ථයක් , වැඩ කිරීම , වර්කනයේ ප්‍රතිවිරුද්ධ ලෙස අර්ථ දැක්වුවෙමි .

alias workoff='deactivate'

මතක තබා ගැනීම පහසුය:

[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$

1
කුමන ගොනුවේද? .bashrc?
සයිඩ්

ඔව්, ඔව්, අන්වර්ථය පිළිබඳ උදාහරණයක් සඳහා මෙම පිළිතුර බලන්න~/.bashrc
බොබ් ස්ටේන්

21
මම මේ අන්වර්ථයට කැමතියි. කරාටේ කිඩ් (වැක්සන්; වැක්සොෆ්) මට මතක් කරයි
C0deH4cker

0 C0deH4cker: මම SO වෙත ඇතුල් වී මෙම ප්‍රශ්නයට නැවත පැමිණියේ ඔබේ අදහස +1 කිරීමට පමණි: p
pooley1994

lol මම හිතුවා (අත්පුඩි ගසන්න; අත්පුඩි ගසන්න). මම හිතන්නේ අපට (ජර්ක්--) ද ඇතුළත් කළ හැකිය
එඩිසන්

54

භාවිත:

$ deactivate 

මෙය ක්‍රියාත්මක නොවන්නේ නම්, උත්සාහ කරන්න

$ source deactivate

Bashsource වැඩ කරන්නේ කෙසේදැයි දන්නා ඕනෑම අයෙකු එය අමුතු දෙයක් යැයි සිතනු ඇත, නමුත් virtualenv වටා ඇති සමහර ආවරණ / වැඩ ප්‍රවාහයන් එය අනුපූරක / ප්‍රතිවිරුද්ධ පාර්ශවයක් ලෙස ක්‍රියාත්මක කරයි source activate. ඔබගේ සැතපුම් ගණන වෙනස් විය හැකිය.


7
deactivateඔබ activateගොනුව ප්‍රභව කරන විට නිර්මාණය වන ශ්‍රිතයකි . ඔබ කළ යෝජනාව source deactivateකිසිසේත්ම තේරුමක් නැත, මන්ද කිසිදු ගොනුවක් නම් කර නැතdeactivate
ඇන්තන්

7
මෙය පහත වැටීමට සුදුසු නොවේ. තෝරාගත් ප්‍රතිචාරයේ සංස්කරණය බලන්න: ප්‍රභව අක්‍රිය කිරීම ඇනකොන්ඩා පරිසරය සඳහා වේ.
ඩග් බ්‍රැඩ්ෂෝ

2
SO පිළිතුරු ගුණාත්මක ප්‍රමිතීන්ට අනුකූල නොවීම සඳහා එය "සුදුසු" වේ. එය පිළිතුරකට වඩා අදහස් දැක්වීමකි. එහෙත්, පෝස්ටරයේ 79 කීර්තිය නිසා, අපි හොඳ විය යුතු අතර හොඳ ප්‍රතිපෝෂණ ලබා දිය යුතුය.
බ un නෝ බ්‍රොනොස්කි

B අබ්දුල් ඔබේ පිළිතුරු ගුණාත්මකභාවය ප්‍රතිශෝධනය 2 හි stackoverflow.com/posts/29586756/revisions
බ un නෝ බ්‍රොනොස්කි

ඔබේ කවචයේ අක්‍රිය කිරීමේ විධානයක් නොමැති නම් මෙය ඉතා ප්‍රයෝජනවත් නොවේ. මෙය ගැටලුවට උපකාරී වන්නේ මන්දැයි මට තේරෙන්නේ නැත. අථත්ය env හි අක්රිය කිරීමේ පිටපතක් නොමැත.
bgenchel

20

පයිතන් අතථ්‍ය පරිසරයක් සක්‍රිය කිරීමට:

$cd ~/python-venv/
$./bin/activate

අක්‍රිය කිරීමට:

$deactivate

3
OS X10.11.1 හි පර්යන්තයේදී, මට භාවිතා කිරීමට සිදුවන බව පෙනේ:$source activate
එරික් මිලියට්-මාටිනස්

මට මූලාශ්‍රය අවශ්‍ය නොවීය. මම කළේ $cd /to/dir/i/want/my/virtualenv/installedඑවකට $virtualenv name_i_want_for_itපසුව $. name_i_want_for_it/bin/activatevirtualenv තවමත් මට ටිකක් කල් පෙනේ. වැඩිදියුණු කළ යුතුයි ...
uchuugaka

3
"ප්‍රභවය" යනු "" ට සමාන වේ. විධානය .. එක්කෝ ගොනුවක් ප්‍රභව කිරීමට භාවිතා කළ හැකිය
කොරී ගෝල්ඩ්බර්ග්

11

මිනිකොන්ඩ 3 පරිසරය තුළ මට ධාවනය කළ යුතු බව මට පෙනී ගියේය:

conda deactivate

වත් deactivateහෝ source deactivateමට වැඩ කළා.


1
deactivateසඳහා වූ virtualenv, හා source deactivateලිනක්ස් මත ඇති පැරණි conda සඳහා වේ. conda deactivateයනු කොන්ඩා එන්ව්ස් සඳහා හොඳ හරස් වේදිකා ක්‍රමයකි (virtualenvs නොවේ)
ටොමාස් ගන්ඩෝර්

6

ඔබ virtualenvwrapperසමඟ වැඩ කරන ආකාරය ලිහිල් කිරීම සඳහා ඔබට භාවිතා කළ හැකිය virtualenv.

ස්ථාපනය කිරීම virtualenvwrapper:

pip install virtualenvwrapper

ඔබ සම්මත කවචයක් භාවිතා කරන්නේ නම්, ඔබේ විවෘත කරන්න ~/.bashrcහෝ ~/.zshrcඔබ Oh My Zsh භාවිතා කරන්නේ නම් . මෙම පේළි දෙක එකතු කරන්න:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

පවතින virtualenv සක්‍රිය කිරීමට, විධානය භාවිතා කරන්න workon:

$ workon myenv
(myenv)$

ඔබේ virtualenv අක්‍රිය කිරීම සඳහා:

(myenv)$ deactivate

මෙන්න මගේ නිබන්ධනය , පියවරෙන් පියවර virtualenv සහ virtualenvwrapper ස්ථාපනය කරන්නේ කෙසේද යන්න.


2
බිල්ට් වර්චුවලෙන්ව් හා සසඳන විට මට ඇත්තේ සුළු වෙනසක්
Nam G VU

1
AmNAMGVU workonවිධානය සැලකිල්ලට ගන්න, එය ඕනෑම නාමාවලියකින් ක්‍රියාත්මක වේ.
igaurav

1
වෙනත් පෝස්ට් එකක සඳහන් කර ඇති පරිදි (සහ ස්ටැකෝවර්ෆ්ලෝ වෙත එය යොමු කිරීමට ප්‍රායෝගික ක්‍රමයක් නොමැත) deactivateමෙම ශ්‍රිතය නිර්වචනය කරන ස්ක්‍රිප්ට් එක මුලින් ලබා නොගෙන ඔබට ෂෙල් ස්ක්‍රිප්ට් එකක භාවිතා කළ නොහැක (එවැනි අවස්ථාවකදී ඔබට එම විධානය සොයාගත නොහැකි වනු ඇත .. . error)
මාරියානෝ රූයිස්

4

එවැනි විධානයක් සෙවීමේ සාමාන්‍ය deactivateක්‍රමයෙන් මූලාශ්‍ර මගින් නිර්මාණය කරන ලද ශ්‍රිතය ~/bin/activateසොයාගත නොහැකි බැවින්, ශ්‍රිතය ක්‍රියාත්මක කරන ~/binඑකක් නිර්මාණය කිරීමට ඔබට අවශ්‍ය විය හැකිය deactivate.

ගැටළුව වන්නේ deactivateතනි විධානයක් අඩංගු ස්ක්‍රිප්ටයක් deactivatevenv හි නොමැති විට අහම්බෙන් ක්‍රියාත්මක වුවහොත් නිමක් නැති ලූපයක් ඇති වීමයි. පොදු වැරැද්දක්.

මෙය වළක්වා ගත හැක්කේ deactivateශ්‍රිතය පවතින්නේ නම් පමණක් ක්‍රියාත්මක කිරීමෙන් පමණි (එනම් නිර්මාණය කර ඇත්තේ මූලාශ්‍රයෙනි activate).

#!/bin/bash

declare -Ff deactivate  && deactivate

3

භාවිතා කරන්න deactivate.

(my_env) user@user:~/my_env$ deactivate
user@user-Lenovo-E40-80:~/my_env$ 

සටහන, (my_env)නැති වී ඇත.


2

මම භාවිතා zsh-autoenv මත පදනම් වන autoenv .

zsh-autoenv ස්වයංක්‍රීයව ප්‍රභවයන් (දන්නා / සුදු ලැයිස්තුගත කර ඇති) .autoenv.zshගොනු, සාමාන්‍යයෙන් ව්‍යාපෘති මූල නාමාවලිවල භාවිතා වේ. එය "ඇතුල් කිරීම" සහ "සිදුවීම්", කූඩු දැමීම සහ විචල්යයන් ගබඩා කිරීම (නැවත ලිවීම සහ ප්රතිස්ථාපනය කිරීම) හසුරුවයි.

මෙන්න උදාහරණයක්:

; cd dtree 
Switching to virtual environment: Development tree utiles
;dtree(feature/task24|✓); cat .autoenv.zsh       
# Autoenv.
echo -n "Switching to virtual environment: "
printf "\e[38;5;93m%s\e[0m\n" "Development tree utiles"
workon dtree
# eof
dtree(feature/task24|✓); cat .autoenv_leave.zsh 
deactivate

එබැවින් මම dtreeනාමාවලියෙන් ඉවත් වූ විට අථත්‍ය පරිසරය ස්වයංක්‍රීයව පිටවෙයි.

"Development tree utiles" නමක් පමණි… මෙහි ඇති ඉලුමිනාටි සමඟ සැඟවුණු අර්ථයක් නැත.


1

deactivateVvenv හි activateස්ක්‍රිප්ට් මඟින් ලබා දී ඇති අංගය භාවිතා කිරීමෙන්, සියලු පරිසර විචල්‍යයන් පෙර පැවති තත්වයට නැවත සකස් කිරීම සඳහා අක්‍රිය කිරීමේ කාර්යය නිසි ලෙස කේතනය කර ඇති බව විශ්වාස කළ යුතුය - මුල් සක්‍රිය කිරීම පමණක් නොව ඕනෑම ස්විචයක් , වින්‍යාසයක් හෝ වෙනත් වැඩ ඔබ මේ අතර සිදු විය හැක.

එය බොහෝ විට හොඳයි, නමුත් එය ඔබගේ පරිසරය වෙනස් කිරීමෙන් පසුව නව, ශුන්‍ය නොවන අවදානමක් හඳුන්වා දෙයි.

කෙසේ වෙතත්, එය එසේ නොවේ තාක්ෂණික හැකි සෘජුවම, සිය මව් පරිසරය විචල්යයන් වෙනස් කිරීමට ක්රියාවලිය සඳහා ය අපි සම්පූර්ණයෙන්ම වග බලා ගන්න වෙනම උප shell භාවිතා කළ හැකි නිසා අපගේ venvගේ පිටුපස ඕනෑම අවශේෂ වෙනස් දාලා යන්න එපා:


සක්‍රිය කිරීමට:

$ bash --init-file PythonVenv/bin/activate

  • මෙය වටා නව කවචයක් ආරම්භ venvවේ. ඔබගේ මුල් bashකවචය නවීකරණය කර නොමැත.

අක්‍රිය කිරීමට:

$ exitහෝ [CTRL]+[D]

  • මෙය පවතින මුළු කවචයෙන් පිටවන අතර venv, සක්‍රීය ස්ක්‍රිප්ට් පරිසරයට යම් වෙනසක් කිරීමට පෙර සිට ඔබව නැවත මුල් කවචයට ඇද දමයි.

උදාහරණයක්:

[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!

[user@computer ~]$ bash --init-file PythonVenv/bin/activate

(PythonVenv) [user@computer ~]$ echo $VIRTUAL_ENV
/home/user/PythonVenv

(PythonVenv) [user@computer ~]$ exit
exit

[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!

0

ඔබේ අතථ්‍ය env අක්‍රිය කිරීම සඳහා එය ඉතා සරල ය

  • ඇනකොන්ඩා භාවිතා කරන්නේ නම් - භාවිතා කරන්නconda deactivate
  • ඇනකොන්ඩා භාවිතා නොකරන්නේ නම් - භාවිතා කරන්නsource deactivate

-1

ස්ථාපක ස්ක්‍රිප්ට් එකක වැඩ කිරීමේදී මටද එම ගැටලුවම තිබුණි. මම bin / activate_this.py කළ දේ දෙස බලා එය ආපසු හැරෙව්වෙමි.

උදාහරණයක්:

#! /usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys

# Path to virtualenv
venv_path = os.path.join('/home', 'sixdays', '.virtualenvs', 'test32')

# Save old values
old_os_path = os.environ['PATH']
old_sys_path = list(sys.path)
old_sys_prefix = sys.prefix


def deactivate():
    # Change back by setting values to starting values
    os.environ['PATH'] = old_os_path
    sys.prefix = old_sys_prefix
    sys.path[:0] = old_sys_path


# Activate the virtualenvironment
activate_this = os.path.join(venv_path, 'bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))


# Print list of pip packages for virtualenv for example purpose
import pip
print str(pip.get_installed_distributions())

# Unload pip module
del pip

# Deactivate/switch back to initial interpreter
deactivate()

# Print list of initial environment pip packages for example purpose
import pip
print str(pip.get_installed_distributions())

එය අපේක්ෂිත පරිදි ක්‍රියාත්මක වේදැයි මට 100% විශ්වාස නැත. මට යමක් සම්පූර්ණයෙන්ම මග හැරී ඇති.


2
අක්‍රීය කළහොත් පාරිසරික මාර්ගය, පද්ධති මාර්ගය, පෙරනිමි විමසුමෙහි අගය නැවත සකසන්නේ නම් ඔබේ අක්‍රිය කිරීමේ කාර්යය හොඳ ප්‍රවේශයකි. මම ඔබේ පිටපතට කැමතියි. දැනටමත් +1 ලබා දී ඇත.
රාම්කුමාර් ඩී
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.