Oz1*_*123 18 python setuptools
我有以下项目结构我想打包:
??? doc
? ??? source
??? src
? ??? core
? ? ??? config
? ? ? ??? log.tmpl
? ? ??? job
? ??? scripts
? ??? test
??? tools
Run Code Online (Sandbox Code Playgroud)
我想包core下src,但排除test.这是我尝试失败的原因:
setup(name='core',
version=version,
package_dir = {'': 'src'}, # Our packages live under src but src is not a package itself
packages = find_packages("src", exclude=["test"]), # I also tried exclude=["src/test"]
install_requires=['xmltodict==0.9.0',
'pymongo==2.7.2',
'ftputil==3.1',
'psutil==2.1.1',
'suds==0.4',
],
include_package_data=True,
)
Run Code Online (Sandbox Code Playgroud)
我知道我可以排除test使用MANIFEST.in文件,但如果你能告诉我如何使用setup和,我会很高兴find_packages.
经过一些游戏后,我意识到构建包装的python setup.py install做法符合我的预期(也就是说,它排除了test).但是,发布会python setup.py sdist导致包含所有内容(即忽略我的exclude指令).我不知道它是一个bug还是一个功能,但仍有可能在sdist使用时排除文件MANIFEST.in.
jfs*_*jfs 26
find_packages("src", exclude=["test"])作品.
诀窍是删除过时的文件,如core.egg-info目录.在您的情况下,您需要删除src/core.egg-info.
这是setup.py我用过的:
from setuptools import setup, find_packages
setup(name='core',
version='0.1',
package_dir={'':'src'},
packages=find_packages("src", exclude=["test"]), # <- test is excluded
####packages=find_packages("src"), # <- test is included
author='J.R. Hacker',
author_email='jr@example.com',
url='http://stackoverflow.com/q/26545668/4279',
package_data={'core': ['config/*.tmpl']},
)
Run Code Online (Sandbox Code Playgroud)
要创建分发,请运行:
$ python setup.py sdist bdist bdist_wheel
Run Code Online (Sandbox Code Playgroud)
要启用后一个命令,请运行:pip install wheel.
我检查了创建的文件.它们不包含test但包含core/__init__.py,core/config/log.tmpl文件.
在MANIFEST.in项目根目录中,添加
prune src/test/
Run Code Online (Sandbox Code Playgroud)
然后用 python setup.py sdist
| 归档时间: |
|
| 查看次数: |
13063 次 |
| 最近记录: |