共享需要激活虚拟环境的脚本
我在一个共享的Linux服务器上安装了virtualenv和virtualenvwrapper,默认设置下,虚拟环境存放在~/.virtualenvs目录里。我有几个Python脚本,只有在激活了正确的虚拟环境后才能运行。
现在我想要分享这些脚本给服务器上的其他用户,但不想让他们了解virtualenv的任何知识……这样他们就可以直接运行python scriptname
或者./scriptname
,脚本就能在我虚拟环境中的库下运行。
有什么最简单的方法可以做到这一点呢?我试过一些选项(比如修改脚本的shebang行,让它指向虚拟环境中的解释器),但这些方法似乎都不够灵活。有没有好的建议呢?
补充说明:这是一个开发服务器,其他几个用户都有账户。不过,他们都不是Python程序员(我现在正试图把他们转变过来)。我只是想让他们能轻松运行这些脚本,甚至可能查看一下逻辑,而不想让不懂Python的人接触到环境的细节。谢谢。
3 个回答
我建议在scriptname
文件里加一行叫做shebang的代码,指向正确的虚拟环境中的Python。这样,你只需要告诉用户scriptname
的完整路径(或者把它放到他们的PATH里),他们甚至不需要知道这是个Python脚本。
如果你的用户是程序员,那我不明白你为什么不希望他们了解虚拟环境的知识。
在脚本的开头使用以下神奇代码(5)。
#!/usr/bin/env python
如果你切换到另一个虚拟环境,它就会使用那个虚拟环境里的Python。即使你停用这个虚拟环境,它仍然可以运行。
如果只在一台服务器上运行,那灵活性就没什么意义了。你可以修改一下开头的那行代码(shebang)。如果你对此有顾虑,可以在开发服务器上做一个打包好的、安装好的版本,不用虚拟环境(virtualenv)。一旦不再处于开发阶段,无论是给本地用户还是给在危地马拉的用户,虚拟环境就不再是合适的工具了。