2014-09-03 52 views
2

我試圖爲conda包裝ffvideo模塊。它是一個鏈接到ffmpeg的Cython模塊。我能夠建立配方(所以鏈接在編譯時工作),但是我不能在新的環境中安裝結果包。原因在於,在執行時,程序包無法找到它在編譯時鏈接的dll(它們的路徑現在不同,因爲它們處於不同的環境中)。conda:將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

要從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. 

默認情況下,蟒蛇和Miniconda添加兩個目錄的路徑 (根目錄和%ROOT%/ Scripts)。您可以將 dll放在該目錄中,或將dll所在的目錄添加到您的PATH的 。