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

时间:2012-05-10 12:20:56

标签: python linux bash scrapy

>> which python
/usr/bin/python
>> python --version
Python 2.4.x

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

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

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

scrapy crawl blaha

不喜欢这样:

python scrapy crawl blaha

3 个答案:

答案 0 :(得分:6)

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

which python
/usr/bin/python
which python2
/usr/bin/python2

可执行文件的名称给出了应用程序的版本。这是the standard for different versions of Python, as defined in PEP 394。要提示您的脚本应该使用哪个版本,通常要做的就是提供一个hashbang。例如,在我的系统上,Python 3.x是默认的Python,所以如果我写一个2.x脚本,我会添加:

#!/usr/bin/env python2

然后,当我的脚本运行时(./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 "$@"

因此,对于您的问题,只需在路径中的某个位置创建一个脚本(假设为/usr/bin/scrapy),其中包含:

#!/bin/bash
python2 scrapy "$@"

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

答案 1 :(得分:1)

你是如何运行程序的?它是否设置了执行位并且您有第一行:

#!/usr/bin/python

然后,好吧,就这样做:

#!/usr/bin/python26

或者,您可以这样做:

>> python26 your-awesome-python-script.py

关于您的编辑:由于您不能/不想更改第三方程序(scrapy),您需要:

  • 重新链接/usr/bin/python(对其执行ls -l。您会看到它指向python24可执行文件,执行ln -s /usr/bin/python /usr/bin/pythonXY或类似重新链接此内容)
  • scrapy
  • 中为.profile创建别名
  • 创建自己的scrapy shell脚本,执行正确的咒语(例如,使用首选解释器运行脚本)

答案 2 :(得分:1)

您可以查看VirtualEnv,它旨在让您在安装时使用不同版本的python。

如果你想使用已安装的python版本,如果你想使用python2.6,只需使用python2.6而不是python