diff options
| author | Franck Cuny <franck.cuny@gmail.com> | 2013-10-13 17:39:16 -0700 |
|---|---|---|
| committer | Franck Cuny <franck.cuny@gmail.com> | 2013-10-13 17:39:16 -0700 |
| commit | 8f56b20a63ab6360c7d84a62a5ae6a66e55216c8 (patch) | |
| tree | 48eb4c1c1dabea626edb00a90bb8262b7a1d4baa /_posts | |
| parent | Rename some file (diff) | |
| download | lumberjaph-8f56b20a63ab6360c7d84a62a5ae6a66e55216c8.tar.gz | |
Convert an article to markdown.
Diffstat (limited to '')
| -rw-r--r-- | _posts/2012-10-31-virtualenv-and-checkouts.md | 33 | ||||
| -rw-r--r-- | _posts/2012-10-31-virtualenv-and-checkouts.textile | 33 |
2 files changed, 33 insertions, 33 deletions
diff --git a/_posts/2012-10-31-virtualenv-and-checkouts.md b/_posts/2012-10-31-virtualenv-and-checkouts.md new file mode 100644 index 0000000..039d4b3 --- /dev/null +++ b/_posts/2012-10-31-virtualenv-and-checkouts.md @@ -0,0 +1,33 @@ +--- +layout: post +title: Virtualenv and checkouts +summary: In which I share a trick for virtualenv +--- + +I've started to do some Clojure in my spare time. The default tool adopted by the community to manage projects is [leiningen](http://leiningen.org). For those of you who don't know what **lein** is, it's a tool to automate your Clojure project: it will boostrap a new project, install the dependencies, and there's a plugin mechanism to extend the default possibilities of the tool. + +One of the nice feature of the tool is the **checkouts/** directory. From the [FAQ](https://github.com/technomancy/leiningen/blob/preview/doc/FAQ.md): + +> If you create a directory named checkouts in your project root and symlink some other project roots into it, Leiningen will allow you to hack on them in parallel. + +For Python projects at [$work](http://www.saymedia.com/careers) I use [virtualenvwrapper](http://virtualenvwrapper.readthedocs.org/en/latest/) to easily work on them without having to deal with conflicting dependencies. When I need to change a library that is used by one of the project, usually I go to the virtualenv directory and create a symlink so it uses the one I'm editing. + +What I really want is a mechanism similar to **lein**, where I can have a **checkouts/** directory inside the main project, where I can clone a library or create a symlink. Since **virtualenvwrapper** provides a hook mechanism, I wrote a small hook inside **~/.virtualenvs/postactivate**: + +```sh +#!/bin/bash + +# move to the directory of the project +proj_name=$(echo $VIRTUAL_ENV|awk -F'/' '{print $NF}') +proj_path=/home/vagrant/src/$proj_name + +cd $proj_path + +if [ -d checkouts ]; then + for ext in $(ls checkouts); do + export PYTHONPATH=proj_path/checkouts/$ext:$PYTHONPATH + done +fi +``` + +Then, when I type `workon $project_name` in my shell, the environment is activated, I'm moved to the right directory, and the library inside the **checkouts/** directory are added to my **PYTHONPATH**. diff --git a/_posts/2012-10-31-virtualenv-and-checkouts.textile b/_posts/2012-10-31-virtualenv-and-checkouts.textile deleted file mode 100644 index ddc91b6..0000000 --- a/_posts/2012-10-31-virtualenv-and-checkouts.textile +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: post -category: python -title: Virtualenv and checkouts ---- - -I've started to do some Clojure in my spare time. The default tool adopted by the community to manage projects is "leiningen":http://leiningen.org. For those of you who don't know what @lein@ is, it's a tool to automate your Clojure project: it will boostrap a new project, install the dependencies, and there's a plugin mechanism to extend the default possibilities of the tool. - -One of the nice feature of the tool is the *checkouts/* directory. From the "FAQ":https://github.com/technomancy/leiningen/blob/preview/doc/FAQ.md : - -bq. If you create a directory named checkouts in your project root and symlink some other project roots into it, Leiningen will allow you to hack on them in parallel. - -For Python projects at "$work":http://www.saymedia.com/careers I use "virtualenvwrapper":http://virtualenvwrapper.readthedocs.org/en/latest/ to easily work on them without having to deal with conflicting dependencies. When I need to change a library that is used by one of the project, usually I go to the virtualenv directory and create a symlink so it uses the one I'm editing. - -What I really want is a mechanism similar to @lein@, where I can have a *checkouts/* directory inside the main project, where I can clone a library or create a symlink. Since @virtualenvwrapper@ provides a hook mechanism, I wrote a small hook inside @~/.virtualenvs/postactivate@: - -{% highlight bash %} -#!/bin/bash - -# move to the directory of the project -proj_name=$(echo $VIRTUAL_ENV|awk -F'/' '{print $NF}') -proj_path=/home/vagrant/src/$proj_name - -cd $proj_path - -if [ -d checkouts ]; then - for ext in $(ls checkouts); do - export PYTHONPATH=proj_path/checkouts/$ext:$PYTHONPATH - done -fi -{% endhighlight %} - -Then, when I type @workon $project_name@ in my shell, the environment is activated, I'm moved to the right directory, and the library inside the *checkouts/* directory are added to my @PYTHONPATH@. |
