2017-10-18 166 views
1

試圖用一個MANIFEST.in文件(包含一行):爲什麼setuptools不安裝我在MANIFEST.in中命名的「數據文件」?

recursive-include etc * 

安裝一些文件systemd(是的,我抱着我的有關部分鼻)

我看到文件被sdist添加到tarball中,但沒有任何東西會導致它們安裝。

setup.py包含以下行

packages=find_packages(), 
    include_package_data=True, 

然後,如果我添加這setup.py文件並刪除MANIFEST.in

data_files=[ 
     ('etc/systemd/system/', ['etc/systemd/system/uwsgi.service']) 
    ], 

他們安裝符合市場預期。有沒有什麼缺失,我需要添加MANIFEST.in工作,而不是通過setup.py名稱列舉所有文件?

回答

2

package_datadata_files不是一回事。 package_data是安裝在與*.py文件(因此「包」部分)相同的目錄中的&文件。因此include_package_data僅標記爲data files it finds inside your package directories(強調添加)作爲包數據。除非您的代碼被存儲在您的軟件包源中的etc/下,否則您的任何文件都不會被視爲包數據。爲了安裝以外的文件您的Python軟件包目錄you need to use data_files,並且沒有快捷方式,因爲它有include_package_data

+0

我查過了,事實確實如此。謝謝 – boatcoder

相關問題