我正在尝试将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
选项吗?
答案 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所在的目录 你的路径。