首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >virtualenv和CLI工具

virtualenv和CLI工具
EN

Stack Overflow用户
提问于 2014-09-27 11:36:57
回答 3查看 1.6K关注 0票数 3

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

假设我想要创建一个CLI工具来与某个API交互,可能使用Click或docopt。显然,您不希望每次使用此工具时都必须使用source venv/bin/activate。但我认为,即使在开发之后,最好仍然使用virtualenv来保持环境的整洁。

对于新手的问题,很抱歉,but...what,你应该做什么来打包一个脚本,以便它可以以这种方式干净地使用呢?(我更习惯于RubyGems,并且还在摸索Pip和VirtualEnv。)

EN

回答 3

Stack Overflow用户

发布于 2015-04-22 04:34:21

通常,如果您在提供二进制命令行脚本的虚拟环境中安装了一个包,例如在~/.virtualenv/bin/中,您可以将其符号链接到~/bin/中(或者您希望放置本地脚本的路径上的任何位置)。

有几个项目旨在解决这个问题:

  • pipsi pip脚本安装程序--相当于为可执行二进制文件的you
  • pipx pip

执行虚拟环境创建和符号链接

票数 3
EN

Stack Overflow用户

发布于 2014-10-03 09:36:06

Dabapps写的一篇关于virtualenv的优秀文章会让你明白这一点:http://www.dabapps.com/blog/introduction-to-pip-and-virtualenv-python/

至于从CLI脚本调用它:

  • cd复制到您的项目root

  • env/bin/python your_main_file.py (假设您的虚拟环境名为env)

这样一来,你就不需要每次都获取virtualenv了。

票数 1
EN

Stack Overflow用户

发布于 2014-09-27 11:50:52

每个virtualenv都有自己的Python site_packages、内置模型和Python解释器。因此,virtualenv是在项目级上使用的,而不是在“通过包打包”级。它隔离了Python模块的集合和可能的依赖项。每个virtualenv都有自己的位置,pip将在其中安装包。从理论上讲,virtualenv不应该是必需的,但在实践中,有一种方法可以用不同版本的Python模块和Python解释器拥有不同的“环境”是很好的。我不知道Ruby是否有类似的东西,这会让你对不同的项目有不同的“宝石集”。

直接使用virtualenv的人会在他们的.bashrc中添加别名,例如:

代码语言:javascript
复制
alias workonawesomeproject="source ~/venv/awesomeproject/bin/activate"

他们将使用别名激活virtualenv

代码语言:javascript
复制
workonawesomeproject

要保留一个虚拟环境,可以使用命令deactivate

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

pip install virtualenvwrapper

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

代码语言:javascript
复制
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,请确保源码

代码语言:javascript
复制
source ~/.bashrc

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

代码语言:javascript
复制
mkvirtualenv awesomeproject

要使用该虚拟环境

代码语言:javascript
复制
workon awesomeproject

停用该虚拟环境

代码语言:javascript
复制
deactivate

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26071059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档