paketinin dışına ek dosyalar ekliyorum Değiştiremediğim sabit bir düzeni olan bir python
uygulamasına sahibim. Kurulum araçları kullanarak ör. Bir setup.py
komut dosyası yazın.setuptools:
Resmi belgeleri kullanarak, bir ilk şablon yazabiliyordum. Ancak, söz konusu uygulama, herhangi bir paketin açıkça bir parçası olmayan birçok ek veri dosyası kullanır.
somepackage
__init__.py
something.py
data.txt
additionalstuff
moredata.txt
INFO.txt
İşte belası: İşte bir örnek kaynak ağacı something.py
kod dosyaları moredata.txt
ve INFO.txt
okur. Birincisi için, additionalstuff
ürününü bir pakete tanıtmak için additionalstuff/__init__.py
boş bir dosya ekleyerek ve setuptools
tarafından alınmasını sağlayarak sorunu çözebilirim. Fakat INFO.txt
'u .egg
'a nasıl ekleyebilirim? dosyalar moredata
ve INFO.txt
bir pakete ait fakat ayrı bir klasöre parçası olan yok çünkü benim için çalışmıyor
package_data = { '' : ['moredata.txt','INFO.txt']}
çizgisinde bir şey kullanarak
Düzenleme
önerilen çözümler Bu, modülün sadece bir parçası, herhangi bir bireysel paketin değil. Yukarıda açıklandığı gibi, bu, additionpythonalstuff
numaralı __init__.py
dosyasını ekleyerek moredata.txt
durumunda düzeltilebilir, böylece bir pakete tanıtılır. Ancak, bu zarif bir çözüm değildir ve üst düzey dizinde yaşayan INFO.txt
için hiç çalışmaz. kabul edilen yanıt dayanarak
Çözüm
, burada bu setup.py
olan çözüm
var:
from setuptools import setup, find_packages
setup(
name='mytest',
version='1.0.0',
description='A sample Python project',
author='Test',
zip_safe=False,
author_email='[email protected]',
keywords='test',
packages=find_packages(),
package_data={'': ['INFO.txt', 'moredata.txt'],
'somepackage':['data.txt']},
data_files=[('.',['INFO.txt']),
('additionalstuff',['additionalstuff/moredata.txt'])],
include_package_data=True,
)
Ve bu MANIFEST.in
geçerli:
include INFO.txt
graft additionalstuff
include somepackage/*.txt
[Setup.py ile Python olmayan dosyalar dahil] olası bir kopyası (http://stackoverflow.com/questions/1612733/including-non-python-files-with-setup-py) – pacholik
Bu bir kopya değildir . Verilen soruda, kabul edilen çözüm 'package_data' kullanmaktır. Bu zaten yaptım. '' '(Boş dize) kullanmak için verilen çözümün, benim eklemek istemediğim dosyaya ait olmadığından, benim için geçerli olmayan "tüm paketler" e atıfta bulunduğundan, benim için çalışmadığına dikkat edin. * Karşı karşıya olduğum problem olan herhangi bir * paket. – carsten