gpt4 book ai didi

python - 从 virtualenv bin 内部运行 python 脚本不起作用

转载 作者:IT老高 更新时间:2023-10-28 22:17:19 24 4
gpt4 key购买 nike

我有一个脚本希望在全局范围内可用。我从标准的 hashbang 开始:

#! /usr/bin/env python

并将其链接到我的 virtualenv 的 bin 目录中:

~/environments/project/env/bin/myscript

并将该目录添加到我的路径中。当我运行命令时:

myscript

我收到其中一个库的导入错误。但是,如果我激活虚拟环境并运行脚本,它会按预期工作。

我已经排除了符号链接(symbolic link)的问题(我也尝试将脚本移动到 bin 文件夹中)。我也试过用 python 运行脚本

python ~/environments/project/env/bin/myscript

以前我使用的是激活环境然后运行我的脚本的脚本,但我的印象是从这个文件夹运行的脚本应该与 virtualenv 的解释器和站点包一起运行。关于为什么这可能不起作用的任何想法或我可以调试它的一些方法?

最佳答案

将脚本放入您的 virtualenv 的 bin,然后将该 bin 位置添加到您的全局 PATH 将不会自动获取您的 virtualenv。您确实需要先获取它以使其处于事件状态。

您的系统所知道的就是检查可执行文件的额外路径并运行它。该脚本中没有任何指示虚拟环境的内容。

但是,您可以将 she-bang 行硬编码到您的 virtualenv python,在这种情况下,站点包将最终出现在路径上:

#!/Users/foo/environments/project/env/bin/python

或者另一种选择是简单地创建一个小型 bash 包装器来调用您的原始 python 脚本,这将允许您使用通用的 she-bang 离开您的原始脚本..

所以如果 myscript.py 是:#!/usr/bin/env python ...

然后你可以制作一个myscript:

#!/bin/bash

/Users/foo/environments/project/env/bin/python myscript.py

当您执行 myscript 时,它会使用您设置的解释器显式调用您的 python 脚本。

关于python - 从 virtualenv bin 内部运行 python 脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11963019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com