相关疑难解决方法(0)

如何检查Django版本

我必须在我们的应用程序中使用PythonDjango.所以我有两个版本的Python,2.6和2.7.现在我已经安装了Django.我可以运行示例应用程序来测试Django的成功.但是我如何确定Django是使用2.6还是2.7版本以及Django使用的是什么版本的模块?

python django

499
推荐指数
19
解决办法
52万
查看次数

我安装了哪个版本的Python?

我必须在Windows服务器上运行Python脚本.我怎么知道我拥有哪个版本的Python,甚至真的很重要?我正在考虑更新到最新版本的Python.

python version windows-server

420
推荐指数
17
解决办法
106万
查看次数

如何在运行时检测Python版本?

我有一个Python文件,可能必须支持Python版本<3.x和> = 3.x. 有没有办法反省Python运行时知道它正在运行的版本(例如2.6 or 3.2.x)?

python

261
推荐指数
6
解决办法
20万
查看次数

如何在使用新语言功能的程序中检查Python版本?

如果我的Python脚本至少需要特定版本的Python,那么在使用早期版本的Python启动脚本时,正确失败的正确方法是什么?

如何及早获得控制权以发出错误消息并退出?

例如,我有一个使用ternery操作符(2.5中的新增内容)和"with"块(2.6中的新增内容)的程序.我写了一个简单的小解释器 - 版本检查器例程,这是脚本会调用的第一件事......除了它没有那么远.相反,在我的例程被调用之前,脚本在python编译期间失败.因此,脚本的用户会看到一些非常模糊的synax错误回溯 - 这几乎需要专家推断它只是运行错误版本的Python的情况.

我知道如何检查Python的版本.问题是某些语法在旧版本的Python中是非法的.考虑这个程序:

import sys
if sys.version_info < (2, 4):
    raise "must use python 2.5 or greater"
else:
    # syntax error in 2.4, ok in 2.5
    x = 1 if True else 2
    print x
Run Code Online (Sandbox Code Playgroud)

在2.4下运行时,我想要这个结果

$ ~/bin/python2.4 tern.py 
must use python 2.5 or greater
Run Code Online (Sandbox Code Playgroud)

而不是这个结果:

$ ~/bin/python2.4 tern.py 
  File "tern.py", line 5
    x = 1 if True else 2
           ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

(引导同事.)

python version

235
推荐指数
8
解决办法
25万
查看次数

如何更新Python包?

我正在运行Ubuntu 9:10,并安装了一个名为M2Crypto的软件包(版本为0.19.1).我需要下载,构建和安装最新版本的M2Crypto软件包(0.20.2).

0.19.1包具有多个位置的文件,包括(/ usr/share/pyshared和/usr/lib/pymodules.python2.6).

如何在安装0.20.2之前从我的系统中完全卸载0.19.1版本?

python packages

208
推荐指数
8
解决办法
41万
查看次数

如何使用类型提示指定多个返回类型

我在python中有一个函数可以返回a bool或a list.有没有办法使用类型提示指定返回类型.

例如,这是正确的方法吗?

def foo(id) -> list or bool:
      ...
Run Code Online (Sandbox Code Playgroud)

python return-type type-hinting python-3.x python-3.5

141
推荐指数
4
解决办法
4万
查看次数

SyntaxError:使用匹配大小写时语法无效

我一直在尝试使用匹配大小写而不是一百万个 IF 语句,但我尝试的任何操作都会返回错误:

    match http_code:
          ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我还尝试过测试我发现的示例,这些示例也会返回此错误,包括以下错误:

http_code = "418"

match http_code:
    case "200":
        print("OK")

    case "404":
        print("Not Found")

    case "418":
        print("I'm a teapot")

    case _:
        print("Code not found")
Run Code Online (Sandbox Code Playgroud)

我知道匹配案例对于 python 来说是相当新的,但我使用的是 3.10,所以我不确定为什么它们总是返回这个错误。

python pattern-matching

43
推荐指数
1
解决办法
11万
查看次数

Python中的字符串格式

我想做一些类似的String.Format("[{0}, {1}, {2}]", 1, 2, 3)回报:

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我如何在Python中执行此操作?

python string formatting

31
推荐指数
5
解决办法
9万
查看次数

支持Python 2和Python 3的标准解决方案

我正在尝试编写一个前向兼容程序,我想知道处理需要不同导入的情况的"最佳"方法.

在我的具体情况下,我使用ConfigParser.SafeConfigParser()Python2 configparser.ConfigParser()中的Python2.

到目前为止,我已经通过在导入时使用try-except或在Python(使用sys)版本上使用条件来使其工作.两者都有效,但我想知道是否有推荐的解决方案(也许还有一个我尚未尝试过).

ETA:谢谢大家.我用过six.moves没有问题.

python import compatibility module python-3.x

8
推荐指数
2
解决办法
1755
查看次数

sys.version_info 对于 Python 版本检查是否可靠?

如果我做了一个模块,我想作为在Python 3运行在Python 2相同,有一吨的选项包括sixfutures,和2to3。如果更改的数量很少,那么这些工具中的每一个都有足够的怪癖,我倾向于只为我的模块实际使用的少数不兼容功能编写兼容接口。

实现这一点的合理标准方法是使用简单的版本检查。

import module_bar

if sys.version_info >= (3,):
    uniformly_named_foo = module_bar.py3_thing
else:
    uniformly_named_foo = module_bar.py2_thing
Run Code Online (Sandbox Code Playgroud)

是否有任何奇怪的情况sys.version_info不会正确报告?过去,我已经被格式错误的路径、配置、安装、修改以及诸如此类的东西所困扰,以至于我觉得这不是我应该信任的事情。

当我们深入研究它时,我真正关心的是是否实现了特定功能。在 Web 开发中,嗅探用户代理通常被认为是一种不好的做法。相反,应该尽最大努力确定某个特定功能是否正在使用中。根据功能的不同,有很多方法可以实现这一点。

if hasattr(module_bar, 'py3_thing'):
    uniformly_named_foo = module_bar.py3_thing
else:
    uniformly_named_foo = module_bar.py2_thing
Run Code Online (Sandbox Code Playgroud)

在我的机器上,第二条路线慢两倍(对于一次性操作来说,额外的几百纳秒并不重要),但它似乎没有任何其他主要缺点。还是有优势?是否存在第二种方法会成功而第一种方法会失败的 Python 安装?

python python-2.7 python-3.x

8
推荐指数
1
解决办法
7971
查看次数