【问题标题】:How can I use a specific python interpreter to run my python file如何使用特定的 python 解释器来运行我的 python 文件
【发布时间】:2022-01-10 12:34:52
【问题描述】:

我创建了一个 python 文件并使用了一些包。我在虚拟环境中安装了软件包。现在,当我尝试运行该文件时,它会在默认安装的解释器上运行,并且每次我必须运行该文件时都必须激活虚拟环境。有什么办法可以做到这一点。 结论:文件可以从中选择查找包的位置的代码。

【问题讨论】:

  • 最好提供有关您用来创建更好答案的路径和操作系统的更多信息;-)

标签: python module virtualenv pythoninterpreter


【解决方案1】:

您可以将虚拟环境解释器的路径直接添加到脚本顶部的 shebang 中。例如,如果您的虚拟环境存储在 /home/ishant/venv,则 shebang 将是

#!/home/ishant/venv/bin/python

然后,如果您直接执行您的脚本(在使用chmod +x 等使其可执行之后),将使用您的虚拟环境。

(激活虚拟环境只需更新您的PATH 变量,以便python 解析为虚拟环境,而不是您的“常规”环境。您始终可以直接访问虚拟环境中的工具。)

【讨论】:

  • 这使得它可以在 bash 中直接执行,但仅适用于用户 'ishant'。仅将其用于单用户实验。
  • 我在 Windows 上。你能指定我如何使用“shebang”吗?我对此一无所知。我只是复制了你给我的内容并粘贴了过来。
  • 抱歉,我不知道Windows下Python脚本的常用执行方式。
  • 看看stackoverflow.com/a/70653317/9857620 有一个带有绝对路径的 Windows 解决方案(shebang 仅适用于 posix)。
【解决方案2】:

仅命令行 (Linux)

把它放在你的 ~/.bashrc 中,并在项目根目录中创建名为 'venv' 的虚拟环境:

function cd() {
  if [[ -d ./venv ]] ; then
    deactivate
  fi

  builtin cd $1

  if [[ -d ./venv ]] ; then
    . ./venv/bin/activate
  fi
}

当 cd-ing 进入一个目录时,它会搜索一个名为 venv 的 virtualenv 并在离开时禁用。

绝对路径的替代方案(Linux 和 Windows)

如果你想在没有 bash 的情况下运行脚本,你可以使用 virtualenv 中 python 解释器的绝对路径来运行它。

这是来自项目内部目录:

# Posix:
/path/to/virtualenvname/bin/python run.py

# Windows:
C:\path\to\virtualenvname\Scripts\python.exe run.py

或者,如果您想从项目目录之外执行它:

# Posix:
/path/to/virtualenvname/bin/python /path/to/projectdir/run.py

# Windows:
C:\path\to\virtualenvname\Scripts\python.exe C:\path\to\projectdir\run.py

【讨论】:

  • 请注意,当从除自己的目录之外的任何地方运行脚本时,这实际上不起作用(实际上,如果两者不同,则venv's)。通过PATH 或任何重要的绝对/相对路径调用脚本时,它将不起作用。
  • 谢谢,你是对的。我编辑了我的帖子。
【解决方案3】:

好的,所以我明白了你的意思,我认为为什么不在你的代码中添加一些函数,这样每当你执行它时它就会自动使用虚拟环境

--linux 代码

import os

os.system("source <virtualenv_name>/bin/activate")

--windows 代码

import os

os.system("<virtualenv_name>/bin/activate")

最后一行添加

os.system("deactivate")

将这些行添加到程序的开头,看看它是否有效。

希望这可以帮助您解决问题

谢谢!!

【讨论】:

  • 它说源未被识别为内部或外部命令。
  • 这迫使每个人使用你的代码来创建这个 virtualenv。仅将其用于单用户实验。
  • 看到我再次编辑了我的答案希望它对你有用!!
  • 你真的试过这些吗? sourceactivate 脚本设置环境在当前 shell - 一旦 os.system 完成,它就消失了。
  • 我为 windows 添加了新的,但现在它说:'venv' is not recognized as an internal or external command 这就是我添加的内容:``` import os os.system("venv/Scripts/activate") ```
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 2019-02-27
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
相关资源
最近更新 更多