小编sjp*_*sjp的帖子

Python 3.4:为64位窗口编译cython模块

我有一个.pyx模块,我一直试图通过各种方式在Windows上使用64位python 3.4进行编译但没有成功.

经过大量的试验和错误,它确实编译

python setup.py build_ext --inplace --compiler=mingw32
Run Code Online (Sandbox Code Playgroud)

但是,当然,这不适用于64位python.

使用msvc作为编译器,错误是

File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: ['path']
Run Code Online (Sandbox Code Playgroud)
  • Windows 7的
  • 安装了适用于Windows 7和.NET Framework 4的Microsoft Windows SDK
  • 在C:\ Program Files(x86)中似乎有一些Microsoft Visual Studio 10.0的东西(包括vcvarsall.bat)

不受distutils影响的解决方案也是受欢迎的.

---编辑:附加信息

我现在根据http://bugs.python.org/issue11723修改了distutils以识别mingw-w64 .然后我使用gendef和dlltool制作了libpython34.a,但是收到错误

c:\Python34\libs/libpython34.a: file not recongnized: File truncated
Run Code Online (Sandbox Code Playgroud)

跑步的时候

python setup.py build_ext --inplace --compiler=mingw64
Run Code Online (Sandbox Code Playgroud)

windows distutils cython python-3.x mingw-w64

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

如何为结构制作宏生成与结构匹配的函数方法?

请原谅标题中任何令人困惑的术语,但想象一下我想要一个小宏来标记我创建的结构可用于某些恶意目的。我写了这个小模块:

module Usable

export @usable, isusable

isusable(::Type{T}) where T = false

macro usable(expr::Expr)
    name = expr.args[2]

    return quote
        $expr
        
        Usable.isusable(::Type{$name}) = true     # This in't working
    end
end

end
Run Code Online (Sandbox Code Playgroud)

但是,尝试使用我的宏

julia> include("Usable.jl")
Main.Usable

julia> using Main.Usable

julia> @usable struct Foo
           bar::String
       end
Run Code Online (Sandbox Code Playgroud)

结果是

ERROR: UndefVarError: Foo not defined
Run Code Online (Sandbox Code Playgroud)

该结构显然定义得很好

julia> Foo("soup")
Foo("soup")
Run Code Online (Sandbox Code Playgroud)

所以看起来这个定义比我预期的要早。我显然错过了一些东西,但我无法弄清楚是什么。

macros julia

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

如果计算,为什么这个 clojure 中的两个表达式都被计算?

如果我创建一个新项目

lein new quil foo
Run Code Online (Sandbox Code Playgroud)

然后将 src/foo/core.clj 减少到

(ns foo.core
  (:require [quil.core :as q]
            [quil.middleware :as m]))

(defn draw [state]
  (if (< (rand) 0.5)
    (q/line 0 0 500 500)
    (q/line 0 500 500 0)))

(q/defsketch foo
  :title "Try this at home"
  :size [500 500]
  :draw draw
  :features [:keep-on-top]
  :middleware [m/fun-mode])
Run Code Online (Sandbox Code Playgroud)

在评估程序lein repl(use 'foo.core),无论是画线(即我得到一个大的X)。(if (< (rand) 0.5) true false)按预期工作,那么我错过了什么?

clojure quil

0
推荐指数
1
解决办法
60
查看次数

标签 统计

clojure ×1

cython ×1

distutils ×1

julia ×1

macros ×1

mingw-w64 ×1

python-3.x ×1

quil ×1

windows ×1