【问题标题】:Run Python script using virtualenv使用 virtualenv 运行 Python 脚本
【发布时间】:2021-07-15 12:56:33
【问题描述】:

我有一个名为utils 的python 脚本(注意没有任何.py 扩展名)。我有一些实用功能的地方。路径也被添加到 PATH 变量中。

#!/usr/bin/env python3

import click, sys

@main.command('echo', context_settings=dict(help_option_names=['-h', '--help']))
def echo_test():
    click.echo("Hello World")
    sys.exit(0)

它工作正常。现在我可以在任何地方奔跑utils echo。

我正在尝试使脚本使用 virtualenv 而不是全局 python。我试过了

#!/path/to/venv/bin python3

import click, sys

然后它会抛出错误permission denied

utils 文件的权限为 -rwxr-xr-x

知道如何将 venv 与脚本一起使用。

【问题讨论】:

标签: python python-3.x bash permission-denied


【解决方案1】:

如果你的代码粘贴正确,你的问题是你试图用你的 she-bang 执行一个目录,而不是 Python,因为你有一个空格而不是斜杠作为分隔符:

#!/path/to/venv/bin python3

而不是:

#!/path/to/venv/bin/python3

编辑:顺便说一句,您是否有理由要更改代码,而不仅仅是激活虚拟环境,就像它应该被使用的那样?

如果你想这样做,你可以:

$ source path/to/venv/bin/activate<.optional_extension>

如果您使用 Bash 以外的 shell(也可能是其他类似 Bourne 的 shell),则需要可选扩展。

【讨论】:

    【解决方案2】:

    尝试通过以下命令更改文件权限:

    chmod 755
    

    chmod -R 755 on the /usr/lib/python/site-packages/virtualenv

    甚至

    chmod +x
    

    建议您使用此命令阅读 chmod 的手册页

    man chmod 
    

    如果你不确定。

    【讨论】:

    • 不是文件权限问题。 utils 文件拥有所有必要的权限。
    • Juts 发现了这个-sudo chown -R your_username:your_username path/to/virtuaelenv/stackoverflow.com/questions/19471972/…
    • 我还没有以 root 用户身份创建 venv。无论如何,我已经尝试过了。它没有工作:(
    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2015-09-04
    • 2011-10-20
    • 2017-06-28
    相关资源
    最近更新 更多