jes*_*uis 66 python version virtualenv
我怎么在main.py模块(大概)中告诉Python使用哪个解释器?我的意思是:如果我想要一个特定的脚本使用Python的第3版来解释整个程序,我该怎么做?
额外奖励:这对virtualenv有何影响?我是否正确地认为如果我为我的程序创建virtualenv然后告诉它使用不同版本的Python,那么我可能会遇到一些冲突?
Gra*_*ave 45
也许不完全是你问的问题,但我觉得这对于我的程序开头是有用的:
import sys
if sys.version_info[0] < 3:
raise Exception("Python 3 or a more recent version is required.")
Run Code Online (Sandbox Code Playgroud)
Jon*_*nts 43
你可以直接在脚本的顶行排成行,但这只能在执行./my_program.py时起作用.
如果执行as python my_program.py
,那么which python
将使用返回的任何Python版本.
在re:to virtualenv中使用:virtualenv -p /usr/bin/python3.2
或者设置它来使用Python可执行文件.
And*_*rew 17
我会在最后使用shebang #!/usr/bin/python
(第一行代码)和Python的序列号;)
当您想从Linux命令行运行Python时,它也是一样的.
Dev*_*yer 13
虽然OP可能正在*nix平台上运行,但这个答案可以帮助非*nix平台.我没有在Microsoft Windows中体验过shebang方法.
改述:shebang系列回答了你" 在我的脚本中 "的问题,但我相信只适用于类Unix平台.即使它是在脚本之外的Unix shell,它实际上解释了shebang行来确定要调用哪个版本的Python解释器.我不确定,但我相信该解决方案无法解决Microsoft Windows平台用户的问题.
在Microsoft Windows世界中,简化运行特定Python版本的方式,而不是专门为每个特定版本的Python安装环境变量,只需在python.exe前面添加您想要运行它的路径,例如C:\ Python25\python.exe mymodule.py或D:\ Python27\python.exe mymodule.py
但是,您需要考虑PYTHONPATH和其他PYTHON ...环境变量,这些变量将指向错误版本的Python库.
例如,您可以运行:C:\ Python2.5.2\python.exe mymodule
然而,环境变量可能指向错误的版本:
PYTHONPATH = D:\ Python27
PYTHONLIB = D:\ Python27\lib
充满了可怕的乐趣!
因此,在Windows中,非虚拟化的方法是使用批处理文件来设置环境,并通过在python.exe前面添加其所在的路径来调用特定的Python可执行文件.这种方式还有其他详细信息.尽管如此; 例如,如果您希望控制台在应用程序退出后保持不变,请使用"start"或"cmd.exe"命令的命令行参数来"保存并替换"控制台"环境".
您的问题让我相信您有几个Python模块,每个模块都期望某个版本的Python.通过使用使用子进程模块的启动模块,这可以在脚本内"解决" .您可以调用一个调用模块的模块,而不是调用mymodule.py ; 也许是launch_mymodule.py
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)
Run Code Online (Sandbox Code Playgroud)
我没有测试过这个.
归档时间: |
|
查看次数: |
130892 次 |
最近记录: |