小编Ada*_*wis的帖子

从Django过滤器调用返回的列表的默认顺序是什么?

简短问题
当连接到PostgreSQL数据库时,从Django过滤器调用返回的列表的默认顺序是什么?

背景
通过我自己也承认,我提出在应用一个糟糕的假设层,在其返回一个列表中的顺序将是常数,即不使用"ORDER_BY".我查询的项目列表不是按字母顺序或任何其他故意的顺序.它被认为保持与添加到数据库中的顺序相同.

这个假设适用于数百个查询,但是当订单在不知不觉中发生变化时,我的应用程序报告了失败.据我所知,在这段时间内没有触及这些记录,因为我是维护数据库的唯一人.令人困惑的是,当在Mac OS X上运行Django应用程序时,它仍然按预期工作,但在Win XP上,它改变了顺序.(请注意,上面提到的数百个查询都在Win XP上).

任何对此的见解都会有所帮助,因为我在Django或PostgreSQL文档中找不到解释操作系统差异的任何内容.

示例呼叫

required_tests = Card_Test.objects.using(get_database()).filter(name__icontains=key)
Run Code Online (Sandbox Code Playgroud)

编辑
今天与我的一些同事交谈后,我得到了与BjörnLindqvist相同的答案.

回想起来,我明白为什么这样做经常出错.使用ORM Django,sqlalchemy或其他任何一个好处是您可以编写命令而无需了解或理解(详细)它所连接的数据库.不可否认,我碰巧是其中一个用户.然而,另一方面,在不知道数据库的情况下,这样的调试错误非常麻烦并且可能是灾难性的.

python django postgresql sql-order-by django-orm

47
推荐指数
1
解决办法
2万
查看次数

构建pyinstaller可执行文件时,我可以控制体系结构(32位对64位)吗?

简短问题
在构建pyinstaller可执行文件时,有没有办法控制/保证架构(32位对64位)?

背景
我从py2exe迁移到pyinstaller,因为缺乏64位支持以及一些我很难看过去的小东西.所以在那个说明中,我宁愿回到它.我使用Python 2.7 64位开发了两个应用程序,并且在32位机器上运行时遇到了性能问题.

第一个是简单的wxPython GUI(版本2.9),并连接到USB驱动程序的Windows DLL文件.这个以32位运行似乎非常"安全",因为没有只有64位的模块.但是,在32位Windows XP上运行时,此应用程序在与USB设备通信时会出现严重的性能问题.

第二个应用程序要大得多,我还没有尝试构建和运行,因为担心架构问题.此应用程序中使用了多个64位模块(一个psycopg2).如果无法以32位可执行文件的形式运行,我想远离尝试构建它.

目前的想法
我觉得这可能是可能的(如果模块有32位支持),可以通过在32位模式下强制运行build.py来运行.这有意义吗?

更新
我在我正在建设的第一个项目上取得了一些突破.事实证明,性能问题完全取决于两台机器的速度.我的开发机器有足够的能力足够快地轮询USB设备,而速度慢得多的测试平台(Windows XP)没有.

我通过修改我轮询USB端口的方式修复了这个问题.既然已经修复了,我可以在两个系统上运行exe.尝试将可执行文件构建为单个文件时出现了一个新问题.当运行pyinstaller的Build.py时,它会提取应用程序运行所需的所有DLL.这看起来效果很好,但是当我尝试运行我在Windows 7 64bit上构建的单个exe时,它不能在Windows XP上运行,因为USB加密狗的DLL未被识别为有效的DLL.

为了让单个exe在两个系统上运行,我首先尝试从.spec文件中删除DLL(它似乎是一个python脚本).这很方便,因为我能够使用普通的python列表修饰符修改构建命令之前的包含列表.我希望如果在exe的临时目录中找不到DLL,它会在系统路径上找到它.虽然这种方法可能有效,但我无法在不丢失大量错误的情况下运行它.

我的第二次尝试是在Windows XP机器上构建应用程序(保留嵌入的DLL),希望Win XP DLL可以在Windows 7中运行.成功!这种配置效果很好; 但我坚信这不是最好的解决方案,因为它完全取决于在较新的操作系统上运行的旧DLL.

python windows usb pyinstaller 32bit-64bit

29
推荐指数
3
解决办法
2万
查看次数

使用Flask实现强制页面刷新的最佳方法是什么?

背景
我有大量的字段将从外部进程实时更新.我想定期更新Flask托管页面,以向连接的用户显示任何更改.理想情况下,整个页面不会刷新,这是对类似系统的抱怨,而只是更新页面上的许多字段.

当前方向
我目前的想法是使用可能使用JavaScript来处理这个问题,但我不确定在使用Flask时是否可行.

有没有办法使用Flask或第三方模块来实现这一目标?

附加信息
将使用各种插槽和串行端口更新数据.每个接口都将在其自己的线程中运行并更新共享内存.请注意,Flask/Web界面对共享内存具有只读写入,可由其他线程更新.

总客户端池不应超过20人.这是测试系统的Web界面,通常在任何给定时间只有1-5人连接到它.

html javascript python flask

22
推荐指数
2
解决办法
2万
查看次数

Python可以在打开套接字时选择什么网络适配器吗?

运行python应用程序的目标机器将有三个可用的网络接口.通常,所有三个网络都将大不相同,但是三个网络中的两个可能在类似的网络上.

在下面的示例中,我无法控制ETH 2上的目标地址(因为它是预先配置的系统),因此我强制选择要以编程方式使用的适配器.

我很确定这将取决于操作系统如何处理路由连接.我希望有一种独立于平台的方法来解决使用python的问题,因为这个应用程序有可能需要在Windows 7以及Linux机器上运行.

示例代码

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.0.2', 8000)) # Which device will this connect to??
Run Code Online (Sandbox Code Playgroud)

正常情况

  • ETH 0资料来源:192.168.0.1
  • ETH 0目的地:192.168.0.2
  • ETH 1资料来源:10.20.30.1
  • ETH 1目的地:10.20.30.2
  • ETH 2资料来源:60.50.40.1
  • ETH 2目的地:60.50.40.1

可能的麻烦案例

  • ETH 0资料来源:192.168.0.1
  • ETH 0目的地:192.168.0.2
  • ETH 1资料来源:10.20.30.1
  • ETH 1目的地:10.20.30.2
  • ETH 2资料来源:192.168.0.3
  • ETH 2目的地:192.168.0.2

附加信息
适配器ETH0,1和2都连接到不同的物理网络

python sockets linux windows

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

在Windows上使用Python虚拟环境时有哪些陷阱和变通方法?

简短描述
这个问题并不是要问是否需要使用虚拟环境,而是在使用Ian Bicking的virtualenv时 ,在Windows中管理环境的最佳方式是什么(如果有的话).如果您有多个想法,请多次回答,以便最好的答案可以投票.谢谢!

背景
当在python中开发时,我通常尽可能地尝试使用Mac osx/bash.但是,总有一些项目我不得不使用Windows来获得硬件/驱动程序支持.对于这些项目,我倾向于依靠"双击"方法来运行带有已注册python.exe的模块.使用"双击"是一种同时运行多个线程/测试的简单方法,无需打开新的命令提示符,向下钻取到所需的目录,然后键入"python.exe module.py" .

最终目标
我希望有一种方法来管理和利用虚拟环境,而无需处于命令提示符下(仅限Windows)

愿望清单
1.能够从pip(命令行)或二进制文件(无论出于何种原因无法使用pip安装的模块)安装模块.
2.使用virtualenv.exe从GUI管理环境.(创建,删除,列出,激活等......)

研究
到目前为止,我已经能够使用不同的脚本/方法完成我的愿望清单中的点点滴滴,但还没有找到一种方法来组合它们.我计划将其中的大部分组合成一个GUI我自己,但认为找出是否有一个很好的理由这是不明智的.

使用更改在Windows中注册的python版本的脚本,可以非常轻松地将二进制文件安装到虚拟环境中.我已经使用该脚本几个月了,只有很好的结果.见SO问题

管理环境似乎是更困难的部分.

如果使用bash,则有Doug Hellmann编写的virutalenvwrapper.我在Mac OSX上工作时会使用它,并且会推荐它.

有此发挥到电源外壳中的端口位置 ,但仍然需要安装第三方命令提示符界面.

我看到的一个更独特的窗口,我看到端口virtualenvwrapper蝙蝠文件.我没有测试过这个,但它仍然需要使用命令提示符.在这里找到

我迄今发现的最有希望的助手功能是由Justin Driscoll编写的.虽然这个确切的例子需要命令提示符,但将它转换为python GUI可以调用的东西是微不足道的.在我认为应该与群众一起检查实现目标的最佳途径之前,这是我走下去的道路.

python windows virtualenv

12
推荐指数
1
解决办法
743
查看次数

在OS X上以32位模式运行带有virtualenv的非系统Python

简短问题
使用virtualenv/virtualenvwrapper是否可以为python链接到特定虚拟环境的调用添加前缀?

背景
我想有一个使用brew安装的 Python 2.7的多个虚拟环境,但有些运行在64位模式和其他32位模式.

下面我有我的OS X开发的典型设置.我想要添加到python调用的特定前缀是arch -i386强制python以32位模式运行.同样,最重要的部分是它只能在调用后添加workon env32(如示例所示).我知道我可以在.bash_profile中设置一个别名,但每次创建/删除虚拟环境时都必须修改它.

编辑
为了详细说明我使用简单别名的问题,可能有超过1 32位的虚拟环境.这就是说,调用workon将理想地添加前缀来python调用,因此终端的工作流程将是相同的.调用后的含义workon env_x_32我可以使用,python并且arch -i386在使用终端时对我来说是透明的.

Python安装:

> brew install python --framework --universal
Run Code Online (Sandbox Code Playgroud)

创建虚拟环境(安装pip,virtualenv和virtualenvwrapper之后):

> mkvirtualenv env_1_64 --no-site-packages
> mkvirtualenv env_1_32 --no-site-packages

> mkvirtualenv env_2_64 --no-site-packages
> mkvirtualenv env_2_32 --no-site-packages
Run Code Online (Sandbox Code Playgroud)

64位用法:

> workon env_1_64
> python myscript.py

> workon env_2_64
> python my_other_project_script.py
Run Code Online (Sandbox Code Playgroud)

32位用法:(当前/非理想)

> workon env_1_32
> arch -i386 …
Run Code Online (Sandbox Code Playgroud)

python macos virtualenv virtualenvwrapper

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

包中Python目录的典型命名约定

问题
我想知道是否存在计划作为模块导入的Python目录命名的标准约定.意味着该目录包含空白__init__.py

背景
到目前为止,我几乎没有考虑过它,只根据在文件系统级别有意义的内容进行命名.让我遇到麻烦的是,在文件系统级别有意义的东西对其他开发人员的独立模块也有意义.考虑以下目录:

+ drivers
    + prologix  
        - __init__.py
        - driver_a.py
        - driver_b.py
    + visa
        - __init__.py  
        - driver_a.py
        - driver_b.py
    __init__.py
    ringout.py <-- simple file to ring-out the drivers  
Run Code Online (Sandbox Code Playgroud)

虽然在打开prologix的驱动程序时工作正常,但在尝试导入我的签证驱动程序以及pyVisa的"签证"模块时遇到了问题.诊断问题非常容易,但将签证驱动程序的文件夹重命名为"visa_dir"的修复程序使代码更难以阅读(IMO).

import drivers.visa  
Run Code Online (Sandbox Code Playgroud)

VS

import drivers.visa_dir  
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来处理这个?

python directory naming-conventions

10
推荐指数
1
解决办法
1474
查看次数

Python PIP没有显示pypi包

简短的问题

从PyPi添加软件包到pip的可用性之间有延迟吗?

背景

我最近把一个推到了PyPi.从我所说的这一步没有错误(它注册正常),但我不能使用pip来安装包.

python pip pypi

9
推荐指数
1
解决办法
1097
查看次数

我应该从Django 1.2.5迁移到1.3.x吗?有没有未记载的问题?

简短问题
有没有令人信服的理由将Django 1.2.5更新为1.3?如果发行说明中的​​注释更改不会直接影响我的应用程序.

编辑:
为了更好地澄清我的问题(感谢S.Lott!):Django 1.3的发行说明中是否有任何未提及的问题,如果从版本1.2.5升级,我应该注意这些问题?

背景
我已经完成了1.2.5的所有开发,没有任何麻烦.我将在接下来的一到两周内部署我的应用程序,它的生命周期将持续使用18到24个月.

辅助(更一般的问题)
在发布之前,获取最新且最好的(稳定)版本的依赖项是一种好习惯吗?

python django release-management

7
推荐指数
1
解决办法
919
查看次数

Python内置'compile'的主要用途是什么?

在查看Python内置函数列表时,我很难理解该方法的用处compile.我能找到的所有例子都指向一个简单的"你好世界".是否有意义什么它,而不是使用它.

这与Python用于生成.pyc文件的方法相同吗?

这可以用来删除Python的一些动态特性,以提高某些代码块的性能吗?(完全清楚C中的模块是预编译模块的方法.)

python compilation built-in

7
推荐指数
1
解决办法
493
查看次数