Python 如何为此应用程序结构编写setup.py?

Python 如何为此应用程序结构编写setup.py?,python,distutils,setup.py,Python,Distutils,Setup.py,我已经用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 | | |

我已经用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文档并进行一些测试之后。出现了几个问题:

  • 我(或应该)如何在
    /lib/python/site package
    下打包我的根包(myApp)

    packages = [''],
    package_dir = {'': ''},
    package_data= {'': ['icons/*.*', 'resources/*.*']},
    
    因为在我的py文件中,我通过相对路径引用资源/图标。例如,在
    foo.py
    中可能有
    icons/a.png
    而在
    gui/g1.py
    中可能有
    。/icons/e.png
    等等

  • 如何打包
    图标
    资源
    目录?

    packages = [''],
    package_dir = {'': ''},
    package_data= {'': ['icons/*.*', 'resources/*.*']},
    
    似乎
    package\u data
    data\u 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/...
    
  • 我的应用程序结构有问题吗?

    packages = [''],
    package_dir = {'': ''},
    package_data= {'': ['icons/*.*', 'resources/*.*']},
    
    这些资源/图标/任何文件是否应该放在特定的python包中,而不是放在项目根目录下?因此,在setup.py中,我可以使用
    package_data
    将它们复制到正确的位置


  • 你读过吗?分发文档更详细一些。@MartijnPieters不,我没有读过。链接的thx。“我在路上。”马蒂尼皮特尔我看了导游。特别是非包数据文件部分[它提到setuptools将在ProjectRoot下安装所有非软件包数据,而不像distutils。这是我想要的。但它没有说明如何安装……或者我遗漏了什么?pip,
    easy\u install
    zc.buildout
    工具为您安装软件包;然后您使用
    pkg\u资源
    mod您可以在任何地方加载资源。@MartijnPieters,问题是
    图标和
    资源不属于任何软件包。它们位于项目/应用程序根目录下,(没有
    \u init\uuuuuuuuuuuuuuupy
    )您的意思是我应该手动编写的
    路径/to/icons
    ,例如
    /usr/lib/python2.7/site packages/myApp-version-py2.7.egg/icons
    ?它就在您拥有文件的任何地方。无论是相对路径还是绝对路径