更改Python版本以调用两个不同的模块
我有一个简单的程序,其中使用了两个模块,即sqlite3和twython。现在sqlite3用于python2.6,twython用于2.7。所以,如果我改变我的家当线到2.6,然后twyhton失败即更改Python版本以调用两个不同的模块
python2.6 t_first.py
ImportError: No module named twython
如果我去做下面
python2.7 t_first.py
ImportError: No module named _sqlite3
任何解决方案。 此外virtualenv不是这里最好的解决方案。
sqlite3
通常是python的内置函数(在2.6和2.7中)。我建议你安装一个非破坏版本的python 2.7,并将twython安装到网站包中。如果您不想这样做,请将twython
安装到2.6站点程序包中。
我最初想到了这一点,并试图从头开始安装,但由于我没有root访问权限,所以很多事情都失败了...... – LonelySoul
@LonelySoul你不需要root权限就可以进行python的私有安装。 – Marcin
谢谢领先。我已经安装了Python2.6,其中sqlite3工作正常。但是,当我通过Shebang调用Python2.6和2.7的可执行文件时,它不起作用。我找到了python命令的可执行文件,它们是/usr/bin/python2.6和/usr/local/bin/python2.7。关于为什么它仍然不能正常工作 – LonelySoul
您可以使用异常处理来管理导入过程。沿线的东西:
try:
import twython
except ImportError:
import _sqlite3
如果你认为你需要在任何情况下存在两个任何一个出现这种工作。如果twython不可用,这将提供twython的优先选择并回退到_sqlite3。这是一个可以接受的逻辑等价于:
if "twython exists" import twython else import _sqlite3
如果您想更具体的了解,你也可以做以下的环境:
import sys
if sys.version_info == (2, 6):
import _sqlite3
elif sys.version_info == (2, 7):
import twython
它是如何解决不同版本问题的。似乎更像是错误处理,并犹豫投入生产。 – LonelySoul
@LonelySoul最初的想法为您提供了一个if/then类型的导入选项,它基于哪些模块存在。我更新了一些更详细的python版本的答案,可能更适合你正在寻找的东西。思考? – Troy
问题在于通过shebang行将两个版本都实施。 – LonelySoul
你尝试修改'sys.path'(由使用'sys.path.append')指向不能导入的各个模块的位置?我会尝试使用2.7并将'sys.path'指向twython模块。我没有使用twython,但它的github页面声明它与Python 2.6+兼容,所以2.7应该可以工作。 –