我知道如何使用virtualenv在长时间运行的脚本中隔离Python依赖项,例如Flask或Twisted应用程序。但是,对于一个打算从命令行调用的脚本,我有点感到困惑。
假设我想创建一个CLI工具来与某些API交互,可能使用Click或docopt。显然,每次您想要使用此工具时,您都不希望source venv/bin/activate
。但我认为,仍然最好仍然使用virtualenv来保持一个干净的环境,甚至超越开发。
很抱歉新手问题,但是......你应该怎样做才能打包脚本以便以这种方式干净利用? (我已经习惯了RubyGems,我仍在计算Pip和VirtualEnv。)
答案 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"
他们会使用别名
激活virtualenvworkonawesomeproject
要离开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