0

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

4

3 回答 3

0

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

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

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

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

于 2022-01-10T12:57:16.653 回答
0

仅命令行 (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
于 2022-01-10T13:39:23.143 回答
-2

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

--linux代码

import os

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

--windows 代码

import os

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

最后一行添加

os.system("deactivate")

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

愿这能帮助你解决你的问题

谢谢!!

于 2022-01-10T13:27:28.630 回答