File: tips.html

package info (click to toggle)
virtualenvwrapper 3.4-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,140 kB
  • sloc: sh: 3,801; python: 991; makefile: 27
file content (234 lines) | stat: -rw-r--r-- 13,095 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Consejos y Trucos &mdash; virtualenvwrapper v3.4 documentation</title>
    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '3.4',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="top" title="virtualenvwrapper v3.4 documentation" href="index.html" />
    <link rel="next" title="Para desarrolladores" href="developers.html" />
    <link rel="prev" title="Extender Virtualenvwrapper" href="plugins.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="developers.html" title="Para desarrolladores"
             accesskey="N">next</a></li>
        <li class="right" >
          <a href="plugins.html" title="Extender Virtualenvwrapper"
             accesskey="P">previous</a> |</li>
        <li><a href="index.html">virtualenvwrapper v3.4 documentation</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="consejos-y-trucos">
<span id="tips-and-tricks"></span><h1>Consejos y Trucos<a class="headerlink" href="#consejos-y-trucos" title="Permalink to this headline">¶</a></h1>
<p>Esta es una lista de contribuciones de usuarios para hacer virtualenv y
virtualenvwrapper incluso más útil. Si tienes tips para compartir, envíame un
email o deja un comentario en <a class="reference external" href="http://blog.doughellmann.com/2010/01/virtualenvwrapper-tips-and-tricks.html">esta entrada de mi blog</a>
y lo agregaré aquí.</p>
<div class="section" id="prompt-zsh">
<h2>Prompt zsh<a class="headerlink" href="#prompt-zsh" title="Permalink to this headline">¶</a></h2>
<p>De <a class="reference external" href="http://www.blogger.com/profile/16779944428406910187">Nat</a>:</p>
<p>Usando zsh, agregué algunas líneas a <tt class="docutils literal"><span class="pre">$WORKON_HOME/post(de)activate</span></tt> para
mostrar el virtualenv activo en el lado derecho de la pantalla en vez de a la
izquierda.</p>
<p>En <tt class="docutils literal"><span class="pre">postactivate</span></tt>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">PS1</span><span class="o">=</span><span class="s">&quot;$_OLD_VIRTUAL_PS1&quot;</span>
<span class="n">_OLD_RPROMPT</span><span class="o">=</span><span class="s">&quot;$RPROMPT&quot;</span>
<span class="n">RPROMPT</span><span class="o">=</span><span class="s">&quot;%{${fg_bold[white]}%}(env: %{${fg[green]}%}`basename </span><span class="se">\&quot;</span><span class="s">$VIRTUAL_ENV</span><span class="se">\&quot;</span><span class="s">`%{${fg_bold[white]}%})%{${reset_color}%} $RPROMPT&quot;</span>
</pre></div>
</div>
<p>Agrega en <tt class="docutils literal"><span class="pre">postdeactivate</span></tt>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">RPROMPT</span><span class="o">=</span><span class="s">&quot;$_OLD_RPROMPT&quot;</span>
</pre></div>
</div>
<p>Ajusta los colores de acuerdo a tu gusto personal o a tu entorno.</p>
</div>
<div class="section" id="actualizar-las-entradas-de-path-cacheadas">
<h2>Actualizar las entradas de <tt class="docutils literal"><span class="pre">$PATH</span></tt> cacheadas<a class="headerlink" href="#actualizar-las-entradas-de-path-cacheadas" title="Permalink to this headline">¶</a></h2>
<p>De <a class="reference external" href="http://www.blogger.com/profile/16779944428406910187">Nat</a>:</p>
<p>También agregué el comando &#8216;rehas&#8217; a <tt class="docutils literal"><span class="pre">$WORKON_HOME/postactivate</span></tt> y
<tt class="docutils literal"><span class="pre">$WORKON_HOME/postdeactivate</span></tt> porque estaba teniendo algunos problemas
con zsh ya que no actualizaba los paths inmediatamente.</p>
</div>
<div class="section" id="atar-el-soporte-para-virtualenv-de-pip">
<h2>Atar el soporte para virtualenv de pip<a class="headerlink" href="#atar-el-soporte-para-virtualenv-de-pip" title="Permalink to this headline">¶</a></h2>
<p>Vía <a class="reference external" href="http://becomingguru.com/">http://becomingguru.com/</a>:</p>
<p>Agrega esto al script de login de tu shell para indicarle a pip que use el mismo
directorio para virtualenv que para virtualenwrapper:</p>
<div class="highlight-python"><pre>export PIP_VIRTUALENV_BASE=$WORKON_HOME</pre>
</div>
<p>y Vía Nat:</p>
<p>además de lo que dijo becomingguru, esta línea es clave:</p>
<div class="highlight-python"><pre>export PIP_RESPECT_VIRTUALENV=true</pre>
</div>
<p>Eso hace que pip detecte un virtualenv activo e instale dentro de este, sin
pasar el parámetro -E.</p>
</div>
<div class="section" id="crear-los-directorio-para-trabajar-en-el-proyecto">
<h2>Crear los directorio para trabajar en el proyecto<a class="headerlink" href="#crear-los-directorio-para-trabajar-en-el-proyecto" title="Permalink to this headline">¶</a></h2>
<p>Vía <a class="reference external" href="http://www.blogger.com/profile/02618224969192901883">James</a>:</p>
<p>En el script <tt class="docutils literal"><span class="pre">postmkvirtualenv</span></tt> tengo lo siguiente para crear un directorio
basado en el nombre del proyecto, agregar ese directorio la path de python y
luego ingresar a este:</p>
<div class="highlight-python"><pre>proj_name=$(echo $VIRTUAL_ENV|awk -F'/' '{print $NF}')
mkdir $HOME/projects/$proj_name
add2virtualenv $HOME/projects/$proj_name
cd $HOME/projects/$proj_name</pre>
</div>
<p>En el script <tt class="docutils literal"><span class="pre">postactivate</span></tt> tengo configurado para que automáticamente ingrese
a este directorio cuando uso el comando workon:</p>
<div class="highlight-python"><pre>proj_name=$(echo $VIRTUAL_ENV|awk -F'/' '{print $NF}')
cd ~/projects/$proj_name</pre>
</div>
</div>
<div class="section" id="ejecutar-automaticamente-workon-cuando-se-ingresa-a-un-directorio">
<h2>Ejecutar automáticamente workon cuando se ingresa a un directorio<a class="headerlink" href="#ejecutar-automaticamente-workon-cuando-se-ingresa-a-un-directorio" title="Permalink to this headline">¶</a></h2>
<p><a class="reference external" href="http://justinlilly.com/blog/2009/mar/28/virtualenv-wrapper-helper/">Justin Lily escribió un post</a>
sobre algún código que agrego a su entorno de shell para buscar en el directorio
cada vez que se ejecuta <tt class="docutils literal"><span class="pre">cd</span></tt>. Si este encuentra un archivo llamado <tt class="docutils literal"><span class="pre">.venv</span></tt>,
activa el entorno nombrado dentro. Una vez que se deja el directorio, el
virtualenv actual es automáticamente desactivado.</p>
<p><a class="reference external" href="http://www.blogger.com/profile/17141199633387157732">Harry Marr</a>
escribió una función similar que funciona con <a class="reference external" href="http://hmarr.com/2010/jan/19/making-virtualenv-play-nice-with-git/">repositorios git</a>.</p>
</div>
<div class="section" id="instalar-herramientas-comunes-automaticmante-en-nuevos-entornos">
<h2>Instalar herramientas comunes automáticmante en nuevos entornos<a class="headerlink" href="#instalar-herramientas-comunes-automaticmante-en-nuevos-entornos" title="Permalink to this headline">¶</a></h2>
<p>Vía <a class="reference external" href="http://rizumu.myopenid.com/">rizumu</a>:</p>
<p>Tengo esto en postmkvirtualenv para instalar una configuración básica.</p>
<div class="highlight-python"><pre>$ cat postmkvirtualenv
#!/usr/bin/env bash
curl -O http://python-distribute.org/distribute_setup.p... /&gt;python distribute_setup.py
rm distribute_setup.py
easy_install pip==dev
pip install Mercurial</pre>
</div>
<p>Además, tengo un archivo de requerimiento de pip para instalar mis herramientas
de desarrollo.</p>
<div class="highlight-python"><pre>$ cat developer_requirements.txt
ipdb
ipython
pastescript
nose
http://douglatornell.ca/software/python/Nosy-1.0.tar.gz
coverage
sphinx
grin
pyflakes
pep8</pre>
</div>
<p>Entonces, cada proyecto tiene su propio archivo de requerimientos para cosas
como PIL, psycopg2, django-apps, numpy, etc.</p>
</div>
<div class="section" id="cambiar-el-comportamiento-por-default-de-cd">
<h2>Cambiar el comportamiento por default de <tt class="docutils literal"><span class="pre">cd</span></tt><a class="headerlink" href="#cambiar-el-comportamiento-por-default-de-cd" title="Permalink to this headline">¶</a></h2>
<p>Vía <a class="reference external" href="http://www.blogger.com/profile/10879711379090472478">mae</a>:</p>
<p>Esto se supone que es ejecutado después de workon, es como un gancho
<tt class="docutils literal"><span class="pre">postactivate</span></tt>. Basicamente sobreescribe <tt class="docutils literal"><span class="pre">cd</span></tt> para saber sobre VENV
entonces en vez de hacer <tt class="docutils literal"><span class="pre">cd</span></tt> para ir a <tt class="docutils literal"><span class="pre">~</span></tt> irá al root del venv, creo que
es muy práctico y no puedo vivir más sin esto. Si le pasas un path
apropiado entonces hará lo correcto.</p>
<div class="highlight-python"><pre>cd () {
    if (( $# == 0 ))
    then
        builtin cd $VIRTUAL_ENV
    else
        builtin cd "$@"
    fi
}

cd</pre>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Consejos y Trucos</a><ul>
<li><a class="reference internal" href="#prompt-zsh">Prompt zsh</a></li>
<li><a class="reference internal" href="#actualizar-las-entradas-de-path-cacheadas">Actualizar las entradas de <tt class="docutils literal"><span class="pre">$PATH</span></tt> cacheadas</a></li>
<li><a class="reference internal" href="#atar-el-soporte-para-virtualenv-de-pip">Atar el soporte para virtualenv de pip</a></li>
<li><a class="reference internal" href="#crear-los-directorio-para-trabajar-en-el-proyecto">Crear los directorio para trabajar en el proyecto</a></li>
<li><a class="reference internal" href="#ejecutar-automaticamente-workon-cuando-se-ingresa-a-un-directorio">Ejecutar automáticamente workon cuando se ingresa a un directorio</a></li>
<li><a class="reference internal" href="#instalar-herramientas-comunes-automaticmante-en-nuevos-entornos">Instalar herramientas comunes automáticmante en nuevos entornos</a></li>
<li><a class="reference internal" href="#cambiar-el-comportamiento-por-default-de-cd">Cambiar el comportamiento por default de <tt class="docutils literal"><span class="pre">cd</span></tt></a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="plugins.html"
                        title="previous chapter">Extender Virtualenvwrapper</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="developers.html"
                        title="next chapter">Para desarrolladores</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="_sources/tips.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" size="18" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="developers.html" title="Para desarrolladores"
             >next</a></li>
        <li class="right" >
          <a href="plugins.html" title="Extender Virtualenvwrapper"
             >previous</a> |</li>
        <li><a href="index.html">virtualenvwrapper v3.4 documentation</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2009-2011, Doug Hellmann.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.5.
    </div>
  </body>
</html>