如何使python程序使用不同的安装

Sku*_*rpi 1 python linux bash scrapy

>> which python
/usr/bin/python
>> python --version
Python 2.4.x
Run Code Online (Sandbox Code Playgroud)

我的问题很简单,如何在不同的python安装上运行python程序(例如/ usr/bin/python26)?

我希望能够使用与默认安装不同的python安装来运行Scrapy,但这个问题适用于在类Unix系统上运行的Python编写的任何程序.

编辑:为了澄清,我想运行一个其他人写的安装程序,通常运行如下:

scrapy crawl blaha
Run Code Online (Sandbox Code Playgroud)

不是这样的:

python scrapy crawl blaha
Run Code Online (Sandbox Code Playgroud)

Gar*_*tty 6

通常,在Unix系统下,您有多个Python可执行文件,例如,在我的系统上:

which python
/usr/bin/python
which python2
/usr/bin/python2
Run Code Online (Sandbox Code Playgroud)

可执行文件的名称给出了应用程序的版本.这是不同版本的Python的标准,如PEP 394中所定义.要提示您的脚本应该使用哪个版本,通常要做的就是提供一个hashbang.例如,在我的系统上,Python 3.x是默认的Python,所以如果我写一个2.x脚本,我会添加:

#!/usr/bin/env python2
Run Code Online (Sandbox Code Playgroud)

然后,当我的脚本运行(./some_script.py)时,它将使用Python 2.7.3.

你应该避免使用,#!/usr/bin/env python因为它会在不同的系统上做不同的事情.如果他们遵循规范,#!/usr/bin/env python2应该指向2.x并且#!/usr/bin/env python3应该指向3.x - 在Arch下这可以正常工作(仅python指向3.x(异常)).

更新您的编辑:

如果您想这样做,最简单的方法是在系统路径中生成一个只执行命令的可执行文件python some_script ....

这是定期完成的,例如,eclipse在我的系统实际运行/usr/bin/eclipse- 一个包含以下内容的bash脚本:

#!/bin/bash
export ECLIPSE_HOME=/usr/share/eclipse
export GDK_NATIVE_WINDOWS=true
${ECLIPSE_HOME}/eclipse "$@"
Run Code Online (Sandbox Code Playgroud)

所以对于你的问题,只需在你的路径中的某个地方创建一个脚本(让我们说/usr/bin/scrapy),它包含:

#!/bin/bash
python2 scrapy "$@"
Run Code Online (Sandbox Code Playgroud)

我会注意到,将来你应尽量提供尽可能多的关于你的问题的信息,而不是在得到答案后改变它.