【问题标题】:How can I make an executable python script run inside the current virtual environment?如何使可执行的 python 脚本在当前虚拟环境中运行?
【发布时间】:2014-12-03 18:50:33
【问题描述】:

所以我想做的是有一个可执行的python脚本,这样我就可以在我的路径上链接到它并从任何地方运行它,但我需要在本地的虚拟环境中运行它。

目前我在 /usr/local/bin -> ~/dev/project/tools/rest_client.py 中有一个符号链接

在项目目录中权限为:

-rwxr-xr-x  1 luke  staff  3229 Dec  3 10:21 rest_client.py 

rest-client 文件

#!/Users/luke/Envs/py2.7/bin/python

def main():
   #do stuff

当我运行rest-client时,我可以从这样的任何目录运行它

我希望能够将此文件签入 git 存储库并与其他人共享,而无需将 virtualenv 硬编码到文件中,但仍然能够从我机器上的任何位置执行它。

如果我将第一行更改为

#!/usr/bin/python

然后它不会在虚拟环境中运行,除非我通过它执行它

workon py2.7
python ~/dev/project/tools/rest_client.py

在不使用别名之类的情况下,UNIX 是否有适当的方法来做到这一点?

【问题讨论】:

    标签: python virtualenv


    【解决方案1】:

    #!/usr/bin/env python作为你的shebang行来继承当前的python环境。

    【讨论】:

    • 我可能会误解,但我认为这行不通。似乎您不想继承当前的 python 环境,而是继承特定 python 项目所需的环境。例如,如果我有一个依赖于requests python 包的rest_client 可执行文件,我希望该可执行文件一直工作,而不仅仅是当我碰巧在安装了requests 的virtualenv 中时。最初的提问者指定他们希望能够“从任何地方运行它”。
    • @ChristopherShroba 您可以在运行时print(sys.version_info) 查看正在使用的python 解释器。上面的答案意味着它在不激活环境的情况下使用默认的python解释器,但在激活环境时将使用venv的版本。
    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2016-07-05
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多