Ain*_*tor 8 python pip setuptools
我有一个awesomepkg带有setup.py. 我想awesometool在用户运行pip install awesomepkg. 我已经为 编译了不同的操作系统版本awesometool,它bin/位于setup.py.
但是,我找不到配置setup.py. 我尝试了以下方法:
在 中使用scripts=[]关键字setup()。不幸的是,“可执行文件”必须是一个 python 脚本。
所以我尝试使用os.system('bin/awesometool')委托将二进制文件包装在 python 脚本中。它也失败了,因为包装脚本被 pip 复制到其他地方,所以它不知道相对路径在哪里bin/awesometool。
另一个可能的解决方案是data_files关键字。但是,由于某种原因,数据文件没有复制到site_packages安装目录,即使运行python setup.py bdist_wheel表明它们已被复制。
小智 6
我自己刚刚遇到了这个问题。我的解决方案是三倍。
我将程序,例如awesometool,添加到我的包结构中,以便我可以通过package_data关键字添加它:
package_data={'awesomepkg': ['awesometool']}。这会导致它在安装期间实际上被复制到与主init .py相同的文件夹中。
我制作了一个类似于您的步骤 2 的 python 脚本。但是,我首先导入awesomepkg并使用awesomepkg.__path__来获取包安装文件夹的绝对路径,而不是相对路径。这看起来像:
import awesomepkg
import subprocess as sp
import sys
path = awesomepkg.__path__[0]
command = path + "/awesometool"
sp.call([command] + sys.argv)
Run Code Online (Sandbox Code Playgroud)
我也使用了 subprocess 而不是 system,但结果应该是一样的。
我将此脚本添加到scripts关键字setup()
| 归档时间: |
|
| 查看次数: |
2811 次 |
| 最近记录: |