>> 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
答案 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
创建别名
答案 2 :(得分:1)
您可以查看VirtualEnv,它旨在让您在安装时使用不同版本的python。
如果你想使用已安装的python版本,如果你想使用python2.6,只需使用python2.6
而不是python
。