我有一个多平台项目,在这个项目中,我需要提供一些不属于python的第三方可执行文件/数据文件。在源文件中,我将它保存在data目录下,并从主脚本调用可执行文件使用以下行
trd_prt_exe = os.path.join("tools", "syslinux", "bin", "executable_name")
当从源代码进行测试/开发时,它工作得非常好。当我使用setup.py
分发相同的文件时,问题就来了。安装应用程序后使用设置.py,我得到这个错误
显然,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
下。因此,主程序无法定位第三方数据/可执行文件。在
如何克服这个问题?我哪里做错了?在
目前没有回答
相关问题 更多 >
编程相关推荐