我看过这里:
How can I get my setup.py to use a relative path to my files?
在这里:
python distutils does not include data_files
在这里:
Confused about the package_dir and packages settings in setup.py
但没有找到爱情。
我怀疑distutils并不支持我试图使用的目录结构,但是会喜欢确认和/或建议如何改进。
我有以下目录结构:
/src
├── user
├── admin
│ ├── admin.py
│ ├── LICENSE.txt
│ ├── MANIFEST
│ ├── MANIFEST.in
│ ├── README.txt
│ └── setup.py
└── lib
├── __init__.py
├── __init__.pyc
├── rcodes.py
├── rcodes.pyc
├── validation.py
└── validation.pyc
src中的多个项目依赖于lib包。但是,当尝试在/ src / admin中运行setup.py时,我无法在最终包中包含lib目录(使用setup.py sdist)。
Setup.py如下: 来自distutils.core导入设置
setup(
name='admin_server',
version='0.0.0',
author='Instamrkt',
author_email='info@instamrkt.com',
url='http://instamrkt.com',
description='Instamrkt Admin Server',
packages=['lib'],
package_dir = {'lib': '../lib'},
py_modules = [
'admin',
'lib.rcodes',
'lib.validation'
],)
哪个收益率:
[foozle@ip-172-31-36-251 admin]$ python setup.py sdist
running sdist
running check
reading manifest template 'MANIFEST.in'
writing manifest file 'MANIFEST'
creating admin_server-0.0.0
making hard links in admin_server-0.0.0...
hard linking README.txt -> admin_server-0.0.0
hard linking admin.py -> admin_server-0.0.0
hard linking setup.py -> admin_server-0.0.0
Creating tar archive
removing 'admin_server-0.0.0' (and everything under it)
[foozle@ip-172-31-36-251 admin]$ tar tzf ./dist/admin_server-0.0.0.tar.gz
admin_server-0.0.0/
admin_server-0.0.0/PKG-INFO
admin_server-0.0.0/admin.py
admin_server-0.0.0/setup.py
admin_server-0.0.0/README.txt
缺少包lib。
而且为了明确我希望在包中保留相同的目录结构,以便我可以在多个发行版中使用lib用于不同的应用程序。
谢谢!
答案 0 :(得分:1)
使用package_dir选项指向上游目录('../lib')时,无法创建源分发,因为sdist将按原样复制整个源树,并且'../lib'最终在外部构建树的。
但您可以创建二进制分发:
python setup.py bdist
或者,如果使用setuptools:
python setup.py bdist_wheel
如果您的模块是纯Python,则后者具有创建与系统无关的分发的优势。