Phi*_*ham 103 python project virtualenv
使用时应该遵循什么样的目录结构virtualenv?例如,如果我正在构建一个WSGI应用程序并创建一个名为的virtualenv,foobar我将从一个目录结构开始,如:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
Run Code Online (Sandbox Code Playgroud)
创建此环境后,将自己放置在何处:
与virtualenv目录有关?
(假设我已经知道virtualenv目录应该去哪里了.)
Ned*_*ily 87
virtualenv提供python解释器实例,而不是应用程序实例.您通常不会在包含系统默认Python的目录中创建应用程序文件,同样也不需要在virtualenv目录中找到您的应用程序.
例如,您可能有一个项目,其中有多个应用程序使用相同的virtualenv.或者,您可能正在使用virtualenv测试应用程序,该应用程序稍后将使用系统Python进行部署.或者,您可能正在打包一个独立的应用程序,将virtualenv目录放在app目录本身的某个位置可能是有意义的.
所以,总的来说,我认为这个问题没有一个正确的答案.并且,一个好处virtualenv是它支持许多不同的用例:不需要一个正确的方法.
Mai*_*der 55
如果你经常只有几个项目,那么没有什么可以阻止你为每个项目创建一个新的virtualenv,并将你的软件包放在里面:
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/mypackage1
__init__.py
/mypackage2
__init__.py
Run Code Online (Sandbox Code Playgroud)
这种方法的优点是您始终可以确保找到属于项目内部的激活脚本.
$ cd /foobar
$ source bin/activate
$ python
>>> import mypackage1
>>>
Run Code Online (Sandbox Code Playgroud)
如果您决定更有条理,您应该考虑将所有virtualenvs放入一个文件夹中,并在您正在处理的项目之后为每个文件夹命名.
/virtualenvs
/foobar
/bin
{activate, activate.py, easy_install, python}
/include
{python2.6/...}
/lib
{python2.6/...}
/foobar
/mypackage1
__init__.py
/mypackage2
__init__.py
Run Code Online (Sandbox Code Playgroud)
这样,当出现问题时,您可以随时重新使用新的virtualenv,并且您的项目文件保持安全.
另一个优点是您的一些项目可以使用相同的virtualenv,因此如果您有很多依赖项,则不必反复进行相同的安装.
$ cd /foobar
$ source ../virtualenvs/foobar/bin/activate
$ python
>>> import mypackage2
>>>
Run Code Online (Sandbox Code Playgroud)
对于经常需要设置和拆除virtualenvs的用户来说,看看virtualenvwrapper是有意义的.
http://pypi.python.org/pypi/virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)
有了virtualenvwrapper你就可以
* create and delete virtual environments
* organize virtual environments in a central place
* easily switch between environments
Run Code Online (Sandbox Code Playgroud)
在处理项目"foo"和"bar"时,你不必再担心你的虚拟世界在哪里了:
/foo
/mypackage1
__init__.py
/bar
/mypackage2
__init__.py
Run Code Online (Sandbox Code Playgroud)
这就是你开始研究项目"foo"的方法:
$ cd foo
$ workon
bar
foo
$ workon foo
(foo)$ python
>>> import mypackage1
>>>
Run Code Online (Sandbox Code Playgroud)
然后切换到项目"bar"就像这样简单:
$ cd ../bar
$ workon bar
(bar)$ python
>>> import mypackage2
>>>
Run Code Online (Sandbox Code Playgroud)
很整洁,不是吗?
Car*_*yer 28
因为virtualenvs不可重定位,在我看来,将项目文件放在virtualenv目录中是不好的做法.virtualenv本身是一个生成的开发/部署工件(有点像.pyc文件),不是项目的一部分; 它应该很容易被吹掉并随时重新创建它,或者在新的部署主机上创建一个新的,等等.
事实上,许多人使用virtualenvwrapper,它几乎完全消除了你的意识中的实际虚拟现象,默认情况下将它们并排放在$ HOME/.virtualenvs中.
| 归档时间: |
|
| 查看次数: |
34175 次 |
| 最近记录: |