我将virtualenv和virtualenvwrapper安装在具有默认设置的共享Linux服务器上(virtualenvs在〜/ .virtualenvs中)。我有几个Python脚本只能在激活正确的virtualenv时运行。
现在我想与服务器上的其他用户共享这些脚本,但不要求他们了解virtualenv的任何内容...这样他们就可以运行python scriptname
或{{1}并且脚本将使用我的virtualenv中可用的库运行。
最干净的方法是什么?我玩了几个选项(比如改变shebang线指向virtualenv提供的解释器),但它们似乎非常不灵活。有什么建议吗?
编辑:这是一个开发服务器,其他几个人都拥有帐户。但是,它们都不是Python程序员(我目前正在尝试转换它们)。我只是想让他们轻松地运行这些脚本并可能检查他们的逻辑,而不会将非Pythonist暴露给环境细节。感谢。
答案 0 :(得分:104)
在脚本开头使用以下魔法(5)。
#!/usr/bin/env python
更改哪个virtualenv处于活动状态,它将使用该virtualenv中的python。 取消激活virtualenv,它仍然运行。
答案 1 :(得分:6)
我会投票在scriptname
中添加指向正确的virtualenv python的shebang行。您只需告诉用户scriptname
的完整路径(或将其放入PATH中),他们甚至不需要知道它是Python脚本。
如果您的用户是程序员,那么我不明白为什么您不希望他们了解/了解virtualenv。
答案 2 :(得分:0)
如果只在一台服务器上,则灵活性无关紧要。修改shebang。如果您担心这一点,请在不使用virtualenv的开发服务器上制作打包的已安装副本。一旦它脱离了发展,无论是针对本地用户还是危地马拉的用户,virtualenv都不再是正确的工具。