Python 如何为此应用程序结构编写setup.py?
我已经用python(2.7)编写了一个应用程序。结构如下所示: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 | | |
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
?它就在您拥有文件的任何地方。无论是相对路径还是绝对路径