在 Windows 中调用 python 脚本时自动打开虚拟环境
Automatically open a virtual environment when calling a python script in Windows
这个问题以前有人问过,但答案都是几年前的,我找不到任何适合我的,所以我很感激你的帮助。
问题很简单,真的:我有一个 python 脚本和一个虚拟环境,当我双击它或从另一个程序调用它时,我希望它进入 运行 。我怎样才能做到这一点?
您必须将包目录地址添加到您的 sys.path
sys.path
sys 模块中的内置变量。它包含解释器将在其中搜索所需模块的目录列表。
将下面的行添加到脚本的顶部,现在您可以双击脚本文件并且一切正常
import sys; sys.path.append("./<environment path>/Lib/site-packages")
然而,这是一个简单的解决方案,正如 sinoroc 所说,这不是一个好的解决方案,因为在这种情况下,您使用的是系统解释器而不是虚拟环境解释器,所以如果事情没有按预期工作,我不会感到惊讶.
您也可以下载所有需要的包并将它们解压缩到单个文件夹中,然后将该文件夹添加到 sys.path
首先使用下面的命令下载你需要的包
pip download <package names> --dest <directory name>
例如:
pip download requests --dest packages
最后添加文件夹包含你的包到你的路径
import sys; sys.path.append("./<packages directory>")
推荐的解决方案
最好的解决方案是为 windows 编写小的批处理脚本或为 linux 编写 shell 脚本,自动激活虚拟环境,然后 运行 你的脚本
首先为 windows 创建扩展名为 .bat 或为 linux 创建扩展名为 .sh 的文件,然后在下面添加行
用于 .bat 文件
<environment path>\Scripts\activate && python <script name>.py
对于.sh 文件
source <environment path>/bin/activate && python <script name>.py
现在您可以单击此批处理脚本 *.bat 文件或 shell 脚本 *.sh 文件和所有内容工作正常
一些想法
社邦
放置一个 shebang 指向虚拟环境中的 Python 解释器,完整路径位于脚本顶部。
#!/path/to/my/venv/bin/python
import sys
print(sys.executable)
Shell/batch 脚本
编写一个 shell 脚本,将调用封装到实际的 Python 脚本中:
#!/usr/bin/env sh
/path/to/my/venv/bin/python /path/to/my/script.py
Python包装器
#!/usr/bin/env python3
import subprocess
command = [
'/path/to/my/venv/bin/python',
'/path/to/my/script.py',
]
subprocesss.check_call(command)
这个问题以前有人问过,但答案都是几年前的,我找不到任何适合我的,所以我很感激你的帮助。
问题很简单,真的:我有一个 python 脚本和一个虚拟环境,当我双击它或从另一个程序调用它时,我希望它进入 运行 。我怎样才能做到这一点?
您必须将包目录地址添加到您的 sys.path
sys.path
sys 模块中的内置变量。它包含解释器将在其中搜索所需模块的目录列表。
将下面的行添加到脚本的顶部,现在您可以双击脚本文件并且一切正常
import sys; sys.path.append("./<environment path>/Lib/site-packages")
然而,这是一个简单的解决方案,正如 sinoroc 所说,这不是一个好的解决方案,因为在这种情况下,您使用的是系统解释器而不是虚拟环境解释器,所以如果事情没有按预期工作,我不会感到惊讶.
您也可以下载所有需要的包并将它们解压缩到单个文件夹中,然后将该文件夹添加到 sys.path
首先使用下面的命令下载你需要的包
pip download <package names> --dest <directory name>
例如:
pip download requests --dest packages
最后添加文件夹包含你的包到你的路径
import sys; sys.path.append("./<packages directory>")
推荐的解决方案
最好的解决方案是为 windows 编写小的批处理脚本或为 linux 编写 shell 脚本,自动激活虚拟环境,然后 运行 你的脚本
首先为 windows 创建扩展名为 .bat 或为 linux 创建扩展名为 .sh 的文件,然后在下面添加行
用于 .bat 文件
<environment path>\Scripts\activate && python <script name>.py
对于.sh 文件
source <environment path>/bin/activate && python <script name>.py
现在您可以单击此批处理脚本 *.bat 文件或 shell 脚本 *.sh 文件和所有内容工作正常
一些想法
社邦
放置一个 shebang 指向虚拟环境中的 Python 解释器,完整路径位于脚本顶部。
#!/path/to/my/venv/bin/python
import sys
print(sys.executable)
Shell/batch 脚本
编写一个 shell 脚本,将调用封装到实际的 Python 脚本中:
#!/usr/bin/env sh
/path/to/my/venv/bin/python /path/to/my/script.py
Python包装器
#!/usr/bin/env python3
import subprocess
command = [
'/path/to/my/venv/bin/python',
'/path/to/my/script.py',
]
subprocesss.check_call(command)