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