![](/img/trans.png)
[英]Automatically use virtualenv when calling a python script in Windows
[英]Automatically open a virtual environment when calling a python script in Windows
這個問題以前曾被問過,但答案都是幾年前的,我無法為我工作,所以我會很感激一些幫助。
問題很簡單,真的:我有一個 python 腳本和一個虛擬環境,當我雙擊它或從另一個程序調用它時,我希望它在其中運行。 我怎樣才能做到這一點?
一些想法
社邦
在虛擬環境中放置一個指向 Python 解釋器的shebang ,完整路徑位於腳本頂部。
#!/path/to/my/venv/bin/python
import sys
print(sys.executable)
外殼/批處理腳本
編寫一個 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)
您必須將包目錄地址添加到您的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 或 shell 腳本編寫小批處理腳本,為 linux 自動激活虛擬環境,然后運行您的腳本
首先為 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文件,一切正常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.