Mặc dù OP có thể đang làm việc trên nền tảng nix, câu trả lời này có thể giúp ích cho các nền tảng phi nix. Tôi chưa có kinh nghiệm làm việc theo phương pháp shebang trong Microsoft Windows.
Diễn đạt lại: Dòng shebang trả lời câu hỏi của bạn về " trong tập lệnh của tôi " nhưng tôi tin rằng chỉ dành cho các nền tảng giống Unix. Mặc dù nó là Unix shell, bên ngoài script, thực sự thông dịch dòng shebang để xác định phiên bản trình thông dịch Python nào sẽ gọi. Tôi không chắc, nhưng tôi tin rằng giải pháp đó không giải quyết được vấn đề cho người dùng nền tảng Microsoft Windows.
Trong thế giới Microsoft Windows, cách đơn giản hóa cách chạy một phiên bản Python cụ thể, không có biến môi trường được thiết lập cụ thể cho từng phiên bản Python cụ thể được cài đặt, chỉ bằng cách đặt tiền tố python.exe với đường dẫn bạn muốn chạy nó, chẳng hạn như C: \ Python25 \ python.exe mymodule.py hoặc D: \ Python27 \ python.exe mymodule.py
Tuy nhiên, bạn cần phải xem xét các biến môi trường PYTHONPATH và PYTHON ... khác sẽ trỏ đến phiên bản thư viện Python sai.
Ví dụ: bạn có thể chạy: C: \ Python2.5.2 \ python.exe mymodule
Tuy nhiên, các biến môi trường có thể trỏ đến phiên bản sai như:
PYTHONPATH = D: \ Python27
PYTHONLIB = D: \ Python27 \ lib
Tải về niềm vui khủng khiếp!
Vì vậy, một cách không phải virtualenv, trong Windows, sẽ là sử dụng một tệp loạt thiết lập môi trường và gọi một tệp thực thi Python cụ thể thông qua tiền tố python.exe với đường dẫn mà nó nằm trong đó. Cách này có các chi tiết bổ sung mà bạn sẽ có để quản lý mặc dù; chẳng hạn như sử dụng các đối số dòng lệnh cho một trong hai lệnh "start" hoặc "cmd.exe" để "lưu và thay thế môi trường" console "" nếu bạn muốn giao diện điều khiển tồn tại sau khi ứng dụng thoát.
Câu hỏi của bạn khiến tôi tin rằng bạn có một số mô-đun Python, mỗi mô-đun mong đợi một phiên bản Python nhất định. Điều này có thể được giải quyết "trong" tập lệnh bằng cách có một mô-đun khởi chạy sử dụng mô-đun quy trình con . Thay vì gọi mymodule.py, bạn sẽ gọi một mô-đun gọi mô-đun của bạn; có lẽ khởi chạy_mymodule.py
launc_mymodule.py
import sys
import subprocess
if sys.argv[2] == '272':
env272 = {
'PYTHONPATH': 'blabla',
'PYTHONLIB': 'blabla', }
launch272 = subprocess.Popen('D:\\Python272\\python.exe mymodule.py', env=env272)
if sys.argv[1] == '252'
env252 = {
'PYTHONPATH': 'blabla',
'PYTHONLIB': 'blabla', }
launch252 = subprocess.Popen('C:\\Python252\\python.exe mymodule.py', env=env252)
Tôi đã không thử nghiệm điều này.