40

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

现在我想与服务器上的其他用户共享这些脚本,但不需要他们了解有关 virtualenv 的任何信息......因此他们可以运行python scriptname,或者./scriptname脚本将与我的 virtualenv 中可用的库一起运行。

最干净的方法是什么?我玩弄了一些选项(例如将 shebang 线更改为指向 virtualenv 提供的解释器),但它们似乎很不灵活。有什么建议么?


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

4

3 回答 3

106

在脚本的开头使用以下魔法(5)。

#!/usr/bin/env python

更改哪个 virtualenv 处于活动状态,它将使用该 virtualenv 中的 python。停用 virtualenv,它仍然运行。

于 2010-02-13T00:21:43.333 回答
6

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

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

于 2010-02-12T17:45:04.757 回答
-1

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

于 2010-02-12T18:48:17.117 回答