我用python(2.7)编写了一个应用程序。结构如下:
kent$ tree myApp
myApp
|-- foo.py
|-- gui
| |-- g1.py
| |-- g2.py
| |-- g3.py
| `-- __init__.py
|-- icons
| |-- a.png
| `-- e.png
|-- logic
| |-- __init__.py
| |-- l1
| | |-- __init__.py
| | |-- la.py
| | `-- lc.py
| |-- l2
| | |-- __init__.py
| | |-- ld.py
| | `-- lf.py
| |-- logic1.py
| |-- logic2.py
| `-- logic3.py
|-- myApp.py
`-- resources
|-- x.data
`-- z.data
现在我要写一个setup.py
来分发我的应用程序。我是新来的。阅读py文档并做一些测试后。提出几个问题:
我如何(或应该)将我的根包(myApp)打包在/lib/python/site-package
下?
因为在我的py文件中,我通过相对路径引用资源/图标。例如,在foo.py
中可能有icons/a.png
,gui/g1.py
可能有../icons/e.png
等等
如何打包icons
和resources
目录?
似乎package_data
和data_files
不会将这两个目录复制到正确的位置。
这是正确的方法吗?
packages = [''],
package_dir = {'': ''},
package_data= {'': ['icons/*.*', 'resources/*.*']},
安装后,我的文件将是:
/usr/lib/python2.7/site-packages/icons/*.png
/usr/lib/python2.7/site-packages/resources/*.data
/usr/lib/python2.7/site-packages/gui/...
/usr/lib/python2.7/site-packages/logic/...
我的申请结构有问题吗?
那些资源/图标/任何文件应该转到某个python包,而不是项目根目录下吗?所以在setup.py中我可以使用package_data
将它们复制到正确的位置。
答案 0 :(得分:1)
from ez_setup import use_setuptools
use_setuptools()
from setuptools import setup
setup(name="somename",
version="1.0",
description="description string",
long_description="""\
long description
""",
author="Foo",
author_email="bar@gmail.com",
url="http://nowhere.com",
include_package_data=True,
license="MIT",
packages=["gui", "logic"],
package_dir={
"gui": "myApp/gui",
"logic": "myApp/logic",
},
classifiers=[
"Development Status :: 5 - Production/Stable",
"Topic :: Utilities",
"License :: OSI Approved :: MIT License"
],
data_files=[
('/path/to/resources', ['resources/x.data', 'resources/y.data']),
('/path/to/icons', ['myApp/icons/a.ico', 'myApp/icons/e.ico'])
]
)