2010-06-03 60 views
6

我正在爲Python項目編寫setup.py文件,以便我可以分發它。其目的是最終創建一個.egg文件,但我試圖首先使用distutils和常規的.zip來工作。爲什麼我不能使用distutils將這些數據文件包含在Python發行版中?

這是一個Eclipse的PyDev項目,我的文件結構是這樣的:

ProjectName 
    src 
     somePackage 
     module1.py 
     module2.py 
     ... 
    config 
     propsFile1.ini 
     propsFile2.ini 
     propsFile3.ini 
    setup.py 

這裏是到目前爲止我setup.py代碼:

from distutils.core import setup 

setup(name='ProjectName', 
     version='1.0', 
     packages=['somePackage'], 
     data_files = [('config', ['..\config\propsFile1.ini', 
           '..\config\propsFile2.ini', 
           '..\config\propsFile3.ini'])] 
    ) 

當我運行這個(與sdist爲一個命令行參數),一個.zip文件會與所有的python文件一起生成,但不包括配置文件。我認爲這個代碼:

data_files = [('config', ['..\config\propsFile1.ini', 
            '..\config\propsFile2.ini', 
            '..\config\propsFile3.ini'])] 

表明,這3個指定配置文件應該被複制到zip分發了「config」目錄。爲什麼這段代碼不能完成任何事情?我究竟做錯了什麼?

(我也曾嘗試與配置文件的路徑玩耍......但似乎沒有任何幫助。將Python中拋出一個錯誤或警告,如果路徑是不正確的/沒有被發現的文件?)

回答

1

我終於通過將整個config目錄移動到src文件夾中來完成這項工作。這意味着我的路徑已關閉......但由於我似乎無法找到備份目錄的方式(「.. \」沒有任何區別),我將堅持使用此解決方案目前。

6

創建MANIFEST.in文件是這樣的:

include config\* 

編輯)在這裏尋找更多信息:http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute

+0

謝謝。我得到以下錯誤:'警告:找不到匹配'config \ *''的文件。我已經嘗試改變爲.. \ config \ *,但是這也沒有幫助...任何想法? – froadie 2010-06-03 16:02:02

+0

'\'和'*'之間有空格。嘗試刪除? 否則嘗試使用正斜槓。我使用了正斜槓,但因爲您似乎已經使用了反斜槓,所以我在這裏用'\'替換了'/'。不過,我發現在Windows上使用/並不會真的引起任何問題。 如果實在不行,就檢查你是否在正確的軌道上通過硬編碼文件名進去,如: 包括配置/ propsFile1.ini 包括配置/ propsFile2.ini #等... – Umang 2010-06-03 16:55:55

+0

空間只有因爲格式化 - 當我將它們放在一起時,由於某種原因隱藏了斜線。更改爲正斜槓並沒有什麼區別... Python似乎會自動將其轉換回來,同樣的錯誤消息。在單個文件上得到同樣的錯誤...... :(任何線索有什麼問題嗎?它是一個路徑問題嗎? – froadie 2010-06-03 17:07:06

0

我猜你有逃脫的反斜槓文件名;例如,而不是'..\config\whatever',請編寫'..\\config\\whatever',或使用原始字符串語法:r'..\config\whatever'

+0

我試過了(這是我的意思之一,我也嘗試過使用配置文件的路徑),它似乎沒有什麼不同... – froadie 2010-06-03 16:00:37

+0

Distutils總是使用正斜槓。 – 2011-12-21 16:31:15

相關問題