conda:将cython包连接到dll

时间:2014-09-03 13:21:52

标签: cython conda

我正在尝试将ffvideo模块打包为conda。它是一个链接到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选项吗?

1 个答案:

答案 0 :(得分:1)

引用Travis Oliphant的答案来自conda mailing list

  

在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所在的目录   你的路径。