小编Rei*_*ica的帖子

如何运行已安装的python脚本?

我使用distutils来安装我的python包,使用这个setup.py:

import distutils.core

args = {
    'name' :            'plugh',
    'version' :         '1.0',
    'scripts' :         [ "scripts/plugh" ],
    'packages':         [ "plugh" ],
}

d = distutils.core.setup(
    **args
)
Run Code Online (Sandbox Code Playgroud)

在linux/mac上,它按预期工作:

% plugh
hello world
% 
Run Code Online (Sandbox Code Playgroud)

在Windows上,脚本"plugh"不会运行:

C:\Python25\Scripts>plugh
'plugh' is not recognized as an internal or external command,
operable program or batch file.

C:\Python25\Scripts>
Run Code Online (Sandbox Code Playgroud)

我在http://bugs.python.org/issue7231上发现了错误报告,当你安装python时,\ Scripts目录没有添加到PATH,所以我应用了该票证中描述的解决方法(即添加C:\ Python25\Scripts到路径)

C:\Python25\Scripts>path
PATH=c:\Python25\Scripts;C:\Program Files\Legato\nsr\bin;C:\WINDOWS\system32;C:\
WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\QuickTime\QTSystem\;c:\python2
5;c:\local;C:\WINDOWS\system32\WindowsPowerShell\v1.0
Run Code Online (Sandbox Code Playgroud)

这个东西在Windows上不起作用吗?如果是这样,你究竟应该如何在Windows机器上使用python脚本?

我想我可以检测到Windows,并在列表中添加一个名为"plugh.bat"的附加脚本,其中包含以下内容:

@echo off
c:\python25\python.exec c:\python25\scripts\plugh %1 %2 %3 %4 %5 %6 %7 %8 %9
Run Code Online (Sandbox Code Playgroud)

但这真的是正确答案吗?我会想到,对于windows中包含distutils的所有自定义,会有比这更好的答案.

python windows packaging distutils

7
推荐指数
2
解决办法
3942
查看次数

clojure休息和下一个相关

我正在追随Clojure的喜悦,我对这两个陈述感到困惑

(def very-lazy (-> (iterate #(do (print \.) (inc %)) 1) rest rest rest))

(def less-lazy (-> (iterate #(do (print \.) (inc %)) 1) next next next))
Run Code Online (Sandbox Code Playgroud)

因此,产量是

(println (first very-lazy)) ; .4

(println (first less-lazy)) ; 4
Run Code Online (Sandbox Code Playgroud)

这本书继续解释这一点

抓住使用rest构建的lazy seq中的第一个元素会导致实现预期.但是对于使用next构建的seq也不会发生这种情况,因为它之前已经实现过.使用next会导致lazy seq成为一个不太懒的元素,如果实现成本很高,则可能不需要.

我的问题是为什么"非常懒"会有一个额外的点?我的想法是"打印"将打印其参数时,如果不考虑调用nextrest.

谢谢

clojure lazy-evaluation lazy-sequences

7
推荐指数
2
解决办法
414
查看次数

Go的类型推断算法

Go编译器使用什么类型的推理算法?

我尝试在golang上查找,但我找不到文档.我很想假设它会是Hindley-Milner,但我想肯定

type-inference go

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

使结构"具有范围"?

type Friend struct {
    name string
    age  int
}

type Friends struct {
    friends []Friend
}
Run Code Online (Sandbox Code Playgroud)

我想制作Friends范围,这意味着,如果我有一个my_friends带有类型的变量Friends,我可以循环使用:

for i, friend := range my_friends {
    // bla bla
}
Run Code Online (Sandbox Code Playgroud)

Go有可能吗?

go

7
推荐指数
2
解决办法
2289
查看次数

Python list-comprehensions中的lisp风格的`let`语法

请考虑以下代码:

>>> colprint([
        (name, versions[name][0].summary or '')
        for name in sorted(versions.keys())
    ])
Run Code Online (Sandbox Code Playgroud)

这段代码的作用是以字典versions的升序打印字典的元素keys,但由于它value是另一个排序列表,因此只打印其第一个元素的摘要("max").

由于我熟悉letlisp,我将上述内容重写为:

>>> colprint([
        (name, package.summary or '')
        for name in sorted(versions.keys())
        for package in [versions[name][0]]
    )]
Run Code Online (Sandbox Code Playgroud)

你认为这违反了Pythonic吗?可以改进吗?

注意:对于好奇,这里colprint定义.

lisp python refactoring

6
推荐指数
2
解决办法
2716
查看次数

Python中的崩溃报告

是否有可用于纯Python Tkinter应用程序崩溃报告框架?理想情况下,它应该跨平台工作.

实际上,这更像是"异常报告",因为Python解释器本身几乎不会崩溃.

这是一个样本崩溃记者:

替代文字

python tkinter crash-reports

6
推荐指数
2
解决办法
1256
查看次数

如何使用Python检测Windows中的闪存驱动器插件?

我想让我的Windows计算机在检测到插入了具有特定名称的闪存驱动器(例如"我的驱动器")时运行Python脚本.

我怎样才能做到这一点?

我应该在Windows中使用某种工具还是有办法编写另一个Python脚本,以便在插入闪存驱动器后立即检测到它?(如果脚本在计算机上,我更喜欢它.)

(我是一个编程新手..)

python windows usb-drive

6
推荐指数
2
解决办法
9621
查看次数

Redis中的自动增量

我开始使用Redis了,我遇到了以下问题.

我有一堆对象,让我们说Messages在我的系统中.每次新User连接时,我都会执行以下操作:

  1. INCR一些全局变量,比方说g_message_id,并保存INCR的返回值(当前值g_message_id).

  2. LPUSH将新消息(包括id和实际消息)放入列表中.

其他客户端使用值g_message_id来检查是否有任何新消息要获取.

问题是,一个客户端可以INCRg_message_id,但没有时间LPUSH的消息的另一个客户端尝试之前,阅读它,假设有一个新的消息.

换句话说,我正在寻找一种方法来相当于在SQL中添加行,并使用自动递增的索引.

备注:

我不能使用列表索引,因为我经常要删除列表的一部分,使其无效.

我现实中的情况有点复杂,这是一个更简单的版本.

目前的解决方案:

我提出的最佳解决方案以及我打算做的是使用WATCHTransactions尝试自己执行"自动增量".

但这在Redis中是一个常见的用例,我很惊讶它没有现成的答案,所以我担心我做错了什么.

redis

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

从crontab运行python的问题 - "无效的Python安装"

我在我的linux机器上安装了python 2.7,我正在尝试通过crontab安排python脚本.该命令在命令行中运行正常,但是当通过cron运行时,我得到:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site.py", line 553, in <module>
    main()
  File "/usr/local/lib/python2.7/site.py", line 535, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/local/lib/python2.7/site.py", line 268, in addusersitepackages
    user_site = getusersitepackages()
  File "/usr/local/lib/python2.7/site.py", line 243, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/usr/local/lib/python2.7/site.py", line 233, in getuserbase
    USER_BASE = get_config_var('userbase')
  File "/usr/local/lib/python2.7/sysconfig.py", line 535, in get_config_var
    return get_config_vars().get(name)
  File "/usr/local/lib/python2.7/sysconfig.py", line 434, in get_config_vars
    _init_posix(_CONFIG_VARS)
  File "/usr/local/lib/python2.7/sysconfig.py", line 298, in _init_posix
    raise IOError(msg)
IOError: …
Run Code Online (Sandbox Code Playgroud)

python linux ubuntu crontab

6
推荐指数
1
解决办法
3815
查看次数

如何简洁地表示if/else在Django模板中指定CSS类

在Django模板中,我想基于某些"条件"将CSS类添加到DIV,例如:

<div class="pkg-buildinfo 
            {% if v.release.version == pkg.b.release.version %}active{% else %}inactive{% endif %} 
            {% if v.release.version == project.latest.version %}latest{% else %}notlatest{% endif %}">
Run Code Online (Sandbox Code Playgroud)

(注意v是一个循环变量;整个过程都在for循环中)

上面根据两个条件添加了CSS类"活动"或"非活动"和"最新"或"非最新".

然而,这很难阅读和冗长.我发现该with语句不支持分配表达式/条件的值(与复杂变量相对),这是一个遗憾.有一个更好的方法吗?

python django django-templates

6
推荐指数
2
解决办法
2277
查看次数