【问题标题】:How to use setup.py to install a python application如何使用 setup.py 安装 python 应用程序
【发布时间】:2013-09-06 12:46:17
【问题描述】:

我无法理解如何最好地使用 distutils 和 setup.py 来安装我的 wxPython Python 应用程序。

这是我的要求:

  • 在 Windows、Linux、OS X 下安装(这可行吗,还是我应该专注于 Linux,并为 Windows 和 OS X 分发二进制文件?)
  • 对于 Linux,在 /usr/bin/ 中安装主脚本并删除 .py 扩展名,以便可以使用 # gooeypi 调用它
  • 在 python 库文件夹(或子文件夹?)中安装所有其他文件,以便导入工作。

另一个问题:应用程序将在 Windows 下安装在哪里?

最后一个问题:我的树正确吗?我的主要可执行文件应该与我的其他模块在同一个文件夹中吗?这是否会导致与其他模块的潜在名称冲突,尤其是与 util 和 pref 等常见名称冲突?

这是我的树:

gooeypi\ 
    ----gooeypi\
          ------gooeypy.pyw # main executable
          ------controller.py
          ------util.py 
          ------pref.py
          ------configspec.ini
    ----setup.py
    ----LICENSE
    ----MANIFEST.in
    ----README.txt

还有我的 setup.py

$ cat setup.py
#!/usr/bin/env python

from distutils.core import setup

setup(name='GooeyPi',
    version='0.1',
    description='Cross-platform wxPython GUI front-end to PyInstaller',
    author='Pedram Navid',
    author_email='pedram.navid at gmail dot com',
    url='http://www.github.com/multiphrenic/GooeyPi',
    packages=['gooeypi'],
    scripts=['gooeypi/gooeypi.pyw'],
     )

【问题讨论】:

  • 在第二个文件夹 gooeypi 中,您需要空文件__init__.py,因此 python 会理解 gooeypi 是一个包。最后测试你所有的包装输入python setup.py 看看有什么问题
  • 哎呀,错过了 init.py 但它在里面。当我运行 python setup.py install 时,安装工作正常,但是当它应该只是 gooeypi 时,我在 /usr/bin 中留下了一个 gooeyi.pyw 文件。我已经看到这个与安装在 linux 下的其他 python 应用程序一起工作,我只是不记得哪些是我头顶上的..

标签: python wxpython distutils setup.py


【解决方案1】:

要自动创建特定于平台的可执行文件,您需要在 distutils 之上使用 setuptools:http://pythonhosted.org/setuptools/setuptools.html#automatic-script-creation

Updated Link 如果上面的那个不起作用。

【讨论】:

    【解决方案2】:

    关于你的脚本的解决方案在the official doc ;)

    但首先,我认为您需要将脚本 gooeypi/gooeypi.pyw 复制到 gooeypi/gooeypi,然后setup.py 将如下所示:

    setup(name='GooeyPi',
        version='0.1',
        description='Cross-platform wxPython GUI front-end to PyInstaller',
        author='Pedram Navid',
        author_email='pedram.navid at gmail dot com',
        url='http://www.github.com/multiphrenic/GooeyPi',
        packages=['gooeypi'],
        scripts=['gooeypi/gooeypi'],
         )
    

    MANIFEST.in 放:

    include gooeypi/gooeypi
    

    【讨论】:

    • 嗯,有道理,但是这样就消除了与 Windows 的兼容性,不是吗?我在这方面做的越多,我就越需要一个针对 Windows 和 Linux 平台的单独解决方案……这很好。我想我会花更多时间研究其他跨平台的 Python 应用程序。
    • 只是在 Windows 上尝试一下。复制整个文件集并同时执行python setup.py,除非您没有安装此操作系统的计算机。
    猜你喜欢
    • 1970-01-01
    • 2015-03-02
    • 2012-07-28
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    相关资源
    最近更新 更多