python - Windows中调用python脚本时自动打开虚拟环境
问题描述
这个问题以前曾被问过,但答案都是几年前的,我无法为我工作,所以我会很感激一些帮助。
问题很简单,真的:我有一个 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文件,一切正常
推荐阅读
- node.js - nodejs中如何使用sinon进行中间件测试?
- python - AWS S3 同步方法 - 可以完全忽略修改过的文件吗?
- floating-point - 如何在系统verilog中获取实数/短实数的符号、尾数和指数
- powershell - 按行号分段读取文件
- swift - 如何在 UITabelViewCell 类中访问正确的单元格宽度?
- c# - 在发布时设置/获取 DeliveryTag RabbitMQ
- apache-kafka - 具有 Kafka 流的自定义状态存储 (RocksDb) 是否有保留策略?
- powershell - Get-Package 命令包含 xml 字符串 - 需要转换为 PSObject
- python - 应用函数将数组除以向量
- javascript - 如何判断一个特定模块是 CommonJS 模块还是 ES6 模块?