我有一個主要用 python 撰寫的應用程式。我希望制作和使用包含所有必需軟體包的虛擬環境。在 Linux 中,這很容易。這是我設定虛擬環境的shell腳本
#!/bin/bash
#It is best practice to create virtual environments for projects that require many packages installed
python3 -m venv ./python_environment #Creates a new virtual environmnet in PWD
source ./python_environment/bin/activate #swithces to our new virtual environment
#Now we can install the needed packages using pip
python3 -m pip install --upgrade pip
pip install numpy opencv-python pillow imutils
這是我啟動應用程式的腳本
#!/bin/bash
#This is a wrapper that launches program
source ./python_environment/bin/activate # Uses custom python envionment in PWD
PYWRAP=$(cat <<EOF
import tagging
import tagging.tagger_controller
tagging.tagger_controller.start()
EOF
)#BASH Variable to pass to python
python3 -c "$PYWRAP" #Executes the python wrapper
當我嘗試為 Windows 執行此操作時,腳本并不那么優雅。setup.bat 運行,但我注意到一些軟體包沒有安裝
python -m venv python_environment
python_environment\Scripts\activate.bat
python -m pip install --upgrade pip
pip install numpy opencv-python pillow imutils
launcher.bat 僅激活環境,不會啟動應用程式。您可能還注意到這個腳本呼叫了一個 .py 檔案,這不太理想,但我不知道如何將幾行 python 嵌入到批處理檔案中,就像我在 Linux 中所做的那樣。
python_environment\Scripts\activate.bat
python main.py
請讓我知道你的想法...
uj5u.com熱心網友回復:
這不是一個完整的答案,但我想向您展示如何將 Python 嵌入到 Windows 批處理檔案中。請注意,這不是原創的——我在將近 20 年前(2003 年)的某個地方在 Internet 上找到了它。
@echo off
rem = """
rem Do any custom setup like setting environment variables etc if required here ...
python -x "%~f0" %*
goto endofPython """
# Your python code goes here ..
if __name__ == "__main__":
print("Hello World from Python")
rem = """
:endofPython """
uj5u.com熱心網友回復:
我的解決方案是上述兩個答案的組合。
@echo off
rem = """
rem Do any custom setup like setting environment variables etc if required here ...
call python_environment\Scripts\activate.bat
call python -x "%~f0" %*
goto endofPython """
# Your python code goes here ..
import tagging
import tagging.tagger_controller
tagging.tagger_controller.start()
rem = """
:endofPython """
您會注意到這與@martineau 發布的解決方案非常相似,但關鍵區別在于該call命令在第 5 行和第 7 行中使用(歸功于 @aschipfl 的見解)。這使得批處理腳本可以呼叫 python 代碼,而不是在呼叫它后立即關閉應用程式。
感謝您的幫助,祝您好運!!!
科皮烏斯卡普
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485739.html
上一篇:HZNU數模小測驗決議
