共享需要激活virtualenv的脚本

Mzz*_*zzz 39 python virtualenv

我将virtualenv和virtualenvwrapper安装在具有默认设置的共享Linux服务器上(virtualenvs在〜/ .virtualenvs中).我有几个Python脚本只能在激活正确的virtualenv时运行.

现在我想与服务器上的其他用户共享这些脚本,但不要求他们知道关于virtualenv的任何信息......所以他们可以运行python scriptname或者./scriptname脚本将运行我的virtualenv中提供的库.

最干净的方法是什么?我玩了几个选项(比如改变shebang线指向virtualenv提供的解释器),但它们看起来相当不灵活.有什么建议?


编辑:这是一个开发服务器,其他几个人有帐户.但是,它们都不是Python程序员(我目前正在尝试转换它们).我只是想让他们轻松地运行这些脚本并可能检查他们的逻辑,而不会将非Pythonist暴露给环境细节.谢谢.

小智 104

在脚本开头使用以下魔术(5).

#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)

改变virtualenv是活跃的,它将使用来自virtualenv的python.停用virtualenv,它仍然运行.

  • virtualenv改变/ usr/bin/env python指向你的virtualenv python.所以这是正确的方法 (8认同)

Hei*_*nen 6

我会投票scriptname指向正确的virtualenv python 添加一个shebang线.您只需告诉用户完整路径scriptname(或将其放入PATH中),他们甚至不需要知道它是Python脚本.

如果您的用户是程序员,那么我不明白为什么您不希望他们知道/了解virtualenv.

  • 我不同意第二段.尚未转换为Python的程序员,不会花费精力阅读virtualenv.Python转换器似乎很容易,因为他们花了(投入)了一两个小时玩virtualenv,直到他们习惯了这个想法并且可以使用它.这笔投资是一个障碍. (2认同)

jcd*_*yer -1

如果它只在一台服务器上,那么灵活性就无关紧要了。修改shebang。如果您担心这一点,请在不使用 virtualenv 的开发服务器上制作打包的安装副本。一旦它停止开发,无论是对于本地用户还是危地马拉的用户,virtualenv 都不再是正确的工具。

  • 这不应该是这个问题的公认答案。 (6认同)