【问题标题】:Python executable in #! for any virtual environment#! 中的 Python 可执行文件适用于任何虚拟环境
【发布时间】:2020-05-05 16:03:10
【问题描述】:

我怎样才能编写一个 python 文件,以便它可以在任何虚拟环境中正确运行。如果我在顶部放置一个带有虚拟环境 python 解释器路径的 shabang,我可以从任何地方运行该 python 文件,并且程序会找到它的所有模块。但是,如果有人分叉我的代码并在不同的位置构建虚拟环境,那么所有这些都会中断。

【问题讨论】:

  • 真正你的工作不是为最终用户提供工作的shebang。这就是为什么当您通过 distutils 或 setuptools 安装某些东西时,任何包含单词 python 的 shebang 都会被安装程序提供的 shebang 替换。见docs.python.org/3.8/distutils/…

标签: python virtualenv conda


【解决方案1】:

使用env 命令来查找python,而不是使用硬编码路径。 这是解决此类问题的常用方法。

NAME
env - run a program in a modified environment
SYNOPSIS
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

所以shabang文本应该是:

#!/usr/bin/env python

#!/usr/bin/env python3

其他脚本语言也可以这样做:

#!/usr/bin/env perl

【讨论】:

  • 谢谢。我想这将始终使用解释器,而不是“哪个 python”可以找到。这是否仅适用于 python3 的 Venv 模块?所以我想我不应该“硬编码”我的解释器。再次感谢!
猜你喜欢
  • 2021-08-18
  • 1970-01-01
  • 2020-09-29
  • 2020-01-21
  • 1970-01-01
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 2018-12-29
相关资源
最近更新 更多