使用分发后访问数据文件设置.py

2024-09-26 21:37:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多平台项目,在这个项目中,我需要提供一些不属于python的第三方可执行文件/数据文件。在源文件中,我将它保存在data目录下,并从主脚本调用可执行文件使用以下行

trd_prt_exe = os.path.join("tools", "syslinux", "bin", "executable_name")

当从源代码进行测试/开发时,它工作得非常好。当我使用setup.py分发相同的文件时,问题就来了。安装应用程序后使用设置.py,我得到这个错误

^{pr2}$

显然,python无法在data目录下找到我的可执行文件。在

我们如何在开发期间和分发之后访问这些可执行文件/数据文件。在

更新I

我本可以把它包括进去,但却忘了。这是我的完整项目结构:在

[sundar@arch multibootusb-7.0.0]$ tree 
.
├── data
│   ├── multibootusb.desktop
│   └── multibootusb.png
├── LICENSE.txt
├── multibootusb
├── PKG-INFO
├── README.txt
├── scripts
│   ├── admin.py
│   ├── detect_iso.py
│   ├── __init__.py
│   ├── install_distro.py
│   ├── install_syslinux.py
│   ├── isodump.py
│   ├── multibootusb_ui.py
│   ├── qemu.py
│   ├── uninstall_distro.py
│   ├── update_cfg.py
│   └── var.py
├── setup.py
└── tools
    ├── checking.gif
    ├── mbr.bin
    ├── multibootusb
    │   ├── chain.c32
    │   ├── extlinux.cfg
    │   ├── grub.exe
    │   ├── memdisk
    │   ├── menu.c32
    │   ├── menu.lst
    │   ├── syslinux.cfg
    │   └── vesamenu.c32
    ├── multibootusb.png
    ├── syslinux
    │   └── bin
    │       ├── syslinux3
    │       ├── syslinux4
    │       ├── syslinux5
    │       └── syslinux6
    └── version.txt

以下是我在setup.py中的内容:

from distutils.core import setup
import os
mbusb_version = open(os.path.join("tools", "version.txt"), 'r').read().strip()
setup(
    name='multibootusb',
    version=mbusb_version,
    packages=['scripts'],
    scripts = ['multibootusb'],
    platforms = ['Linux'],
    url='http://multibootusb.org/',
    license='General Public License (GPL)',
    author='Sundar',
    author_email='feedback.multibootusb@gmail.com',
    description='Create multi boot Live linux on a USB disk...',
    long_description = 'The multibootusb is an advanced cross-platform application for installing/uninstalling Linux operating systems on to USB flash drives.',
    data_files = [("/usr/share/applications",["data/multibootusb.desktop"]),
                  ('/usr/share/pixmaps',["data/multibootusb.png"]),
                  ('multibootusb/tools',["tools/checking.gif"]),
                  ('multibootusb/tools',["tools/mbr.bin"]),
                  ('multibootusb/tools',["tools/version.txt"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/chain.c32"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/extlinux.cfg"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/grub.exe"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/memdisk"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/menu.c32"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/menu.lst"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/syslinux.cfg"]),
                  ('multibootusb/tools/multibootusb',["tools/multibootusb/vesamenu.c32"]),
                  ('multibootusb/tools/syslinux/bin',["tools/syslinux/bin/syslinux3"]),
                  ('multibootusb/tools/syslinux/bin',["tools/syslinux/bin/syslinux4"]),
                  ('multibootusb/tools/syslinux/bin',["tools/syslinux/bin/syslinux5"]),
                  ('multibootusb/tools/syslinux/bin',["tools/syslinux/bin/syslinux6"])]
                  #('multibootusb/tools',["tools/multibootusb.png"])]


)

我发现的问题是主可执行脚本“multibootubs”在usr/bin/multibootusb中可用,但其他数据/第三方可执行文件在/usr/multibootusb/下,主程序multibootubs所需的其他模块/s脚本在/usr/lib/python2.7/site-packages/scripts下。因此,主程序无法定位第三方数据/可执行文件。在

如何克服这个问题?我哪里做错了?在


Tags: pytxt可执行文件databinpngversionusr

热门问题