Ago*_*Ago 14 python installation configuration setup.py
我想创建一个setup.py,它将我的文件安装到自定义目录中.我有一个特定的前缀,我希望得到以下结果:
/my/prefix/
bin/
script.sh
libexec/
one.py
two.py
...
lib/pythonX.Y/site-packages/
package/...
Run Code Online (Sandbox Code Playgroud)
我的初始项目如下:
/
script.sh
one.py
two.py
...
setup.py
package/...
__init__.py
...
Run Code Online (Sandbox Code Playgroud)
实现这一目标的最佳方法是什么?我希望能够稍后安装它,例如:
python setup.py install --prefix=/my/prefix
Run Code Online (Sandbox Code Playgroud)
我可以将"package"很好地安装在正确的目录中,因为lib/pythonX.Y/site-packages在--prefix下是默认位置.但有没有一种干净的方法将script.sh变成"bin"和其他python文件到"libexec"?我认为实现这一目标的唯一方法是在我的setup.py脚本中手动复制这些文件.可能有更清洁,更标准的方法吗?
(编辑)
解
我最终得到了setup.py:
setup(name='mylib',
scripts=['script.sh'],
data_files=[('libexec', ['one.py', 'two.py'])]
)
Run Code Online (Sandbox Code Playgroud)
当然,你可以迭代libexec的所有python文件,但我只需要2-3个python文件.
(EDIT2)
另外,我可以使用以下set.cfg:
[install]
prefix=/my/prefix
Run Code Online (Sandbox Code Playgroud)
而不是python setup.py install --prefix=/my/prefix我可以做:
python setup.py install
Run Code Online (Sandbox Code Playgroud)
通过使用scriptssetup函数的参数来处理脚本.对于libexec,您可以将它们视为数据文件并使用数据选项.
setup(...
scripts=glob("bin/*"),
data_files=[(os.path.join(sys.prefix, 'libexec', 'mypackage'), glob("libexec/*"))],
...
)
Run Code Online (Sandbox Code Playgroud)
我不确定如何使用--prefix选项,我从来没有尝试过.
| 归档时间: |
|
| 查看次数: |
15007 次 |
| 最近记录: |