【问题标题】:conda: linking cython package to dllconda:将 cython 包链接到 dll
【发布时间】:2014-09-03 13:21:51
【问题描述】:

我正在尝试为 conda 打包 ffvideo 模块。它是一个链接到 ffmpeg 的 Cython 模块。我能够构建配方(因此链接在编译时有效),但是我无法在新环境中安装生成的包。原因是包在执行时找不到它在编译时链接到的 dll(它们的路径现在不同,因为它们处于不同的环境中)。

我尝试在 conda 配方中使用 binary_has_prefix_files 标志,我指向 Lib\site-packages\ffvideo.pyd。但是,它似乎没有帮助。

有没有办法将 Cython 包链接到相对路径或类似的东西?

目前的配方是:

package:
name: ffvideo
version: 0.0.13

source:
fn: b45143f755ac.zip
url: https://bitbucket.org/groakat/ffvideo/get/b45143f755ac.zip
#  md5: cf42c695fab68116af2c8ef816fca0d9

build:                   [win]
number: 3              [win]
binary_has_prefix_files:
    - Lib\site-packages\ffvideo.pyd

requirements:
build:
    - python
    - cython             [win]
    - mingw                              [win]
    - ffmpeg-dev         [win]  
    - mingw
    - pywin32
    - setuptools
    - libpython

run:
    - python
    - ffmpeg-dev         [win]
    - cython
    - mingw
    - pywin32
    - setuptools
    - libpython


about:
home: https://bitbucket.org/groakat/ffvideo/
license: Standard PIL license

包裹在 binstar https://binstar.org/groakat/ffvideo/files 上。依赖都在我的频道https://binstar.org/groakat/

再想一想。由于ffvideo 依赖于我也打包的ffmpeg-dev,是不是我也需要在那里使用binary_has_prefix_files 选项?

【问题讨论】:

    标签: cython conda


    【解决方案1】:

    引用 conda mailing list 的 Travis Oliphant 的回答:

    在 Windows 上,我们目前推荐的方法是:

    1) put the DLLS next to the executable that needs them
    2) put the DLLS in a directory that is on your PATH environment variable. 
    

    默认情况下,Anaconda 和 Miniconda 在路径中添加两个目录 (根目录和 %ROOT% / Scripts)。你可以把 该目录中的 dll 或添加 dll 所在的目录 你的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-09
      • 2020-10-11
      • 1970-01-01
      • 2015-10-18
      • 2013-01-25
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多