virtualenv和CLI工具

时间:2014-09-27 03:36:57

标签: python virtualenv

我知道如何使用virtualenv在长时间运行的脚本中隔离Python依赖项,例如Flask或Twisted应用程序。但是,对于一个打算从命令行调用的脚本,我有点感到困惑。

假设我想创建一个CLI工具来与某些API交互,可能使用Click或docopt。显然,每次您想要使用此工具时,您都不希望source venv/bin/activate。但我认为,仍然最好仍然使用virtualenv来保持一个干净的环境,甚至超越开发。

很抱歉新手问题,但是......你应该怎样做才能打包脚本以便以这种方式干净利用? (我已经习惯了RubyGems,我仍在计算Pip和VirtualEnv。)

3 个答案:

答案 0 :(得分:2)

一般情况下,如果您在虚拟环境中安装了提供二进制命令行脚本的软件包,请在~/.virtualenv/bin/中将其符号链接到~/bin/(或者在您的路径上的任何位置)喜欢放置本地脚本。)

至少有一个项目旨在成为解决此问题的全面解决方案 - pipsi pip脚本安装程序 - 但相当于为您创建虚拟环境和符号链接

答案 1 :(得分:-1)

Dabapps关于virtualenv的优秀文章会让你清楚: http://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/

至于从CLI脚本调用它:
 1. cd到您的项目根目录
 2. env / bin / python your_main_file.py(假设你的virtualenv名为env)

这样,您无需每次都获取virtualenv。

答案 2 :(得分:-2)

每个virtualenv都拥有自己的Python site_packages,内置模型和Python解释器。因此,virtualenv 意味着在项目级别使用,而不是在"包中使用"水平。它隔离了一组Python模块和可能的依赖项。每个virtualenv都有自己的位置,pip将安装包。从理论上讲,virtualenv不应该是必要的,但在实践中,有一种方法可以拥有不同的环境"使用不同版本的Python模块和Python解释器。我不知道Ruby是否有类似的东西,这样你就可以拥有不同的""不同项目的宝石。

使用直接virtualenv的人会为其.bashrc添加别名,例如:

alias workonawesomeproject="source ~/venv/awesomeproject/bin/activate"

他们会使用别名

激活virtualenv
workonawesomeproject

要离开virtualenv,请使用命令deactivate

处理virtualenvs的更简单方法是使用virtualenvwrapper

pip install virtualenvwrapper

将这些行添加到.bashrc(或其他shell初始化文件)

export WORKON_HOME=$HOME/venv # this directory is your choice
export PROJECT_HOME=$HOME/src # this directory is your choice
source /usr/local/bin/virtualenvwrapper.sh # leave this alone

如果您刚修改了.bashrc,请确保将其提取

source ~/.bashrc

然后创建一个新的virtualenv你只需运行

mkvirtualenv awesomeproject

使用那个virtualenv

workon awesomeproject

停用该virtualenv

deactivate

Virtualenvwrapper文件: http://virtualenvwrapper.readthedocs.org/en/latest/install.html