我有一个awesomepkg
和setup.py
的包。我想在用户运行pip install awesomepkg
时,将二进制可执行文件awesometool
安装到命令行以及包本身。我为awesometool
编译了不同的操作系统版本,它位于setup.py
旁边的bin/
文件夹中。在
但是,我找不到配置setup.py
的好方法。我尝试了以下几点:
在setup()
中使用scripts=[]
关键字。不幸的是,“可执行文件”必须是python脚本。
因此,我尝试使用os.system('bin/awesometool')
来委托,在python脚本中包装二进制文件。它也会失败,因为包装器脚本被pip复制到其他地方,所以它不知道相对路径bin/awesometool
在哪里。
另一个可能的解决方案是data_files
关键字。但是,由于某些原因,数据文件没有被复制到site_packages
安装目录中,即使运行python setup.py bdist_wheel
时表示它们已被复制。
从内包可以使用
我刚碰到这个问题。我的解决方案有三个方面。在
我在包结构中添加了程序,例如
awesometool
,这样我就可以通过package_data
关键字添加它:package_data={'awesomepkg': ['awesometool']}
。 这会导致它在安装过程中实际上被复制到maininit.py所在的文件夹中。我编写了一个类似于步骤2的python脚本。但是,我首先导入
awesomepkg
并使用awesomepkg.__path__
来获得包的安装文件夹的绝对路径,而不是相对路径。这看起来像:我也使用了subprocess而不是system,但是结果应该是一样的。
我将这个脚本添加到
scripts
关键字setup()
相关问题 更多 >
编程相关推荐